Russian advances have ground to a halt in many areas, with Ukrainian forces holding out in several cities and also launching effective counterattacks.
Here are the latest developments on day 23 of the invasion:
- Fighting reported on streets in the centre of Mariupol
- Russian strikes target aircraft facility in western city of Lviv
- Ukrainian forces holding on to Kharkiv despite renewed shelling
- Russian naval forces remain off the coast of Odesa in the Black Sea
Russia launched its attack in the early hours of 24 February, but its forces have failed to build on initial gains they made across the country.
“The Russians are making almost every tactical mistake it is possible to make,” according to Prof Michael Clarke, former director of the Royal United Services Institute (Rusi) think tank.
He told the BBC that Russian forces appeared “completely unprepared” for the military campaign and were losing a lot of equipment and troops.
The fight for Kyiv in the north
Russian forces have been attempting to encircle and cut off the capital, but large areas around Kyiv remain under Ukrainian control, especially in the south.
Ukrainian generals in Kyiv have said their focus at the moment is on keeping Russian artillery out of range of the city centre.
Russian troops advancing on the capital have faced strong Ukrainian resistance and also had serious logistical problems, with many vehicles running out of fuel.
The closest Russian troops to the north west of Kyiv are in the suburbs of Bucha and Irpin, about 25km (15 miles) from the city centre, but they have failed to cross the Irpin River so far.
That river and others across the city, as well as difficult terrain like marshlands and bogs, have helped Ukrainian forces slow Russian advances so far.
A Russian advance from the east has stalled around the suburb of Brovary, about 20km (12 miles) away from the centre of Kyiv.
Justin Bronk, a defence analyst at Rusi, told the BBC earlier this week that he doubts Russia has enough ground forces in place to take Kyiv at the moment.
Big Russian gains in the south
Russian forces initially made rapid gains in the south, with their main objective being the creation of a land corridor between Crimea, which it annexed in 2014, and areas held by Russian-backed separatists in Donetsk and Luhansk.
Standing in the way of that objective has been the port city of Mariupol, which has been encircled by Russian forces since the start of March. Ukrainian officials say some 350,000 civilians remain trapped in the city.
The BBC’s Lyse Doucet says Russia realised it couldn’t immediately take Mariupol with ground forces “so it took the people first, starving them into submission” by cutting the city off and flattening it with aerial bombardment.
Russia’s defence ministry said on Friday its forces were “tightening a noose” around the city, with reports of fighting having reached streets in the centre.
Elsewhere in the south, Russian advances on Mykolaiv in the west have slowed. Taking the city is key for the Russians to push further west towards Odesa and cut off Ukraine’s access to the Black Sea.
Russian naval forces off the coast of Odesa have conducted some shelling of the city in recent days but an amphibious landing would be very difficult and a sign of Russian desperation, according to Mr Bronk.
Russian advances in the east
Fighting continues in the Donetsk and Luhansk regions, where Russian-backed separatists held significant territory before the Russian invasion.
In the north east, Russian troops have almost surrounded the city of Sumy, but Ukrainian forces have prevented attempts to cut it off from the south.
A similar attempt to encircle Kharkiv, Ukraine’s second-largest city, has also been repelled with analysts saying Russian forces there are in short supply of ammunition.
The BBC’s Quentin Sommerville, who has been in Kharkiv this week, says Russians forces there have grown frustrated at not being able to take the city and have turned to artillery strikes instead, destroying entire neighbourhoods.
By David Brown, Bella Hurrell, Dominic Bailey, Mike Hills, Lucy Rodgers, Paul Sargeant, Mark Bryson, Zoe Bartholomew, Sean Willmott, Sana Dionysiou, Joy Roxas, Gerry Fletcher, Jana Tauschinsk and Prina Shah.