A number of explosions shook parts of Kyiv early on Sunday in the first assault on Ukraine’s capital for weeks.
Russia claims it targeted a site storing tanks supplied by Europe, but Ukraine says rockets hit a train repair plant where no tanks were held.
Columns of black smoke could be seen above the city after the attack and at least one person was hurt.
Kyiv has been largely spared in recent months as Russian forces concentrate attacks on Donbas in eastern Ukraine.
The capital has felt like it is returning to some sort of normality; bars and cafes are open and people are back on the streets.
But watching columns of black smoke rising over Kyiv in the early hours of Saturday morning, that illusion was shattered.
Just a few moments before, Russian cruise missiles had slammed into two sites in the east of the city. Dramatic video on social media showed a number of explosions. The man filming cursed the Russians as he ducked for cover.
At the site of one of the strikes, normal life continued. The factory itself was sealed off, but families nearby went about their business, and buses dropped off passengers. One man came and rather angrily demanded we stop filming.
Moscow claimed it was targeting a delivery of tanks and armoured vehicles sent in by Ukraine’s eastern European allies. Kyiv denied this, saying it was a train repair plant dealing with “gondola cars and grain trucks”.
It comes as Russia’s advances into the eastern Donbas region seem to be stalling, with one Ukrainian politician saying the attack on Kyiv was revenge for Moscow’s frustrations.
Some of the fiercest fighting is currently in the city of Severodonetsk – one of the few parts of Luhansk region not fully under Russian control. Luhansk is one of two regions which makes up the Donbas.
Speaking to the BBC, Luhansk regional governor Serhiy Haidai said there was street-fighting in Severodonetsk and that it was still possible for Ukrainian forces to retake it.
“Russians understand that if there is a stable supply of ammunition to Ukrainians, they will not be able to hold the city.”
Severodonetsk lies across the river from the city of Lysychansk, which remains under Ukrainian control. Mr Haidai said it held more strategic value.
“Lysychansk is much more important because it is located on the hill. It is easier for the military to defend and strike,” he said.