KYIV, Ukraine — Russian missiles killed at least four people and destroyed dozens of homes in Lviv early on Thursday, in what officials said was the biggest attack on the western Ukrainian city since Russia launched its full-scale invasion more than 16 months ago.
The authorities said the ages of the victims ranged from 21 to 95 and warned that there could still be people trapped under the rubble.
More than 30 people were wounded in the pre-dawn strike on Lviv, which is hundres of miles from the front lines and has largely been spared the worst violence of the war. President Volodymyr Zelensky vowed a response, saying on Twitter that it would be a “strong one.”
The Ukrainian military said that Russian forces fired 10 Kalibr cruise missiles from carriers and submarines in the Black Sea. Seven missiles were intercepted, the military said, with others hitting the apartment complex and other sites.
“This is the largest attack on Lviv’s civilian infrastructure since the beginning of the full-scale invasion,” Andriy Sadovyi, the city’s mayor, said in a video posted on Twitter that showed him standing in front of wrecked cars, broken windows and debris strewn on the street. He said more than 50 apartments had been destroyed.
Maksym Kozytskyy, the head of the regional military administration, said that a piece of critical infrastructure had also been damaged but did not provide details.
In the early days of Russia’s full-scale invasion of Ukraine, Lviv was considered relatively safe given its proximity to the border with Poland, a NATO member. But it remains well within reach of Moscow’s missiles as fighting rages on the front lines.
Throughout the war, Russian forces have been shifting their tactics with missile and drone attacks, testing and trying to exhaust Ukrainian air defense systems. That’s what happened early on Thursday, according to Ukraine’s military, which said several groups of missiles were spotted on radar heading north before “abruptly changing course” to the west.
Hours after the strike, as rescuers and firefighters removed chunks of rubble from the blast site, a crowd of about 100 people had gathered to watch and wait for permission from the police to re-enter damaged buildings. The air was filled with dust; broken glass crackled underfoot.
Students from a nearby dormitory sat on a ping-pong table, watching the scene. Many wore mismatched clothes, having grabbed whatever they could throw on before running for shelter when the sirens sounded.
Air-raid alerts had started wailing at about 1:30 a.m. in parts of Ukraine — including in the capital, Kyiv — before spreading to other regions. An hour later, the whole country was marked “red” on online alert maps, with Ukraine’s Air Force warning that several missiles were moving toward the west.
The first reports of explosions in Lviv soon followed. The authorities said air defenses were working and urged residents to remain in shelters.
“It was very loud,” Mr. Kozytskyy, the head of the regional administration, wrote on the Telegram app just before 3 a.m, urging people to stay in a safe place.
After the all clear was given around 3:20 a.m., ambulance sirens were heard in the city.
Stanislav Kozliuk contributed reporting from Lviv.