At least 20 civilians, including several children, were able to leave a badly battered steel plant in the Ukrainian port city of Mariupol on Saturday in what could be the start of a long-awaited, larger evacuation of the last holdout in the Russian-held city.

Ukrainian fighters of the Azov regiment, which has been defending the site, said the 20 civilians had left, possibly for the Ukrainian city of Zaporizhzhia, about 225km to the northwest.

Russia’s Tass news agency carried a similar report, though putting the number of evacuees at 25.

A UN-planned evacuation had been in the works, though it was unclear whether Saturday’s evacuation was UN-led and whether further evacuations were imminent. There were no immediate details on the condition of the evacuees.

But the fact that the evacuation took place at all was significant. Conditions in a vast network of tunnels under the Azovstal steel plant – where hundreds of civilians are believed to still be sheltering, along with Ukrainian fighters – are said to be brutal, and earlier efforts at evacuations had been futile.

The apparent ceasefire in Mariupol took place as Russian attacks continued unabated across Ukraine, most heavily in the fiercely disputed eastern regions, but with attacks as far west as Odessa, on the Black Sea coast.

Odessa’s regional governor Maxim Marchenko said a Russian missile strike had destroyed the airport runway, as Russia continues targeting infrastructure and supply lines deep in the west of the country.

There were no victims from the airport strike near the historic city of one million people.

Near Bucha, the town near Kyiv that has become synonymous with allegations of Russian war crimes, Ukrainian police on Saturday reported finding three bodies shot in the head with their hands tied.

The three bodies found in a pit were “brutally killed” by Russian soldiers – each shot in the head, the police said in a statement.

“The victims’ hands were tied, cloths were covering their eyes and some were gagged. There are traces of torture on the corpses,” it said.

Russian forces also on Saturday kept up their relentless shelling on the east of the country, killing at least one person and injuring 12 more.

In Mariupol, the Azov regiment said Saturday that it had been clearing the debris of overnight shelling by Russia to rescue trapped civilians.

From Mariupol’s badly damaged port zone, AFP on Friday heard heavy shelling coming from Azovstal during a media trip organised by the Russian army, with explosions only seconds apart.

“Twenty civilians, women and children . . . have been transferred to a suitable place and we hope that they will be evacuated to Zaporizhzhia, on territory controlled by Ukraine,” said Sviatoslav Palamar, deputy commander of the Azov regiment.

But Denis Pushilin, leader of the breakaway eastern region of Donetsk, accused Ukrainian forces of “acting like outright terrorists” and holding civilians hostage in the steel plant.

On the front line in the east, Russian troops have advanced slowly but steadily in some areas – helped by massive use of artillery – but Ukrainian forces have also recaptured some territory in recent days, particularly around the city of Kharkiv.

One of the areas taken back from Russian control was the village of Ruska Lozova, which evacuees said had been occupied for two months.

“It was two months of terrible fear. Nothing else, a terrible and relentless fear,” Natalia, a 28-year-old evacuee from Ruska Lozova, told AFP after reaching Kharkiv.

“We were in the basements without food for two months, we were eating what we had,” said Svyatoslav, 40, who did not want to give his full name, his eyes red with fatigue.

Thousands of people have been killed and more than 13 million have been forced to flee their homes since the Russian invasion of its pro-Western neighbour began on February 24, according to the UN.

Pentagon spokesman John Kirby on Friday briefly choked with emotion as he described the destruction in Ukraine and accused Russian President Vladimir Putin of “depravity”.

Ukrainian prosecutors say they have pinpointed more than 8,000 war crimes carried out by Russian troops and are investigating 10 Russian soldiers for suspected atrocities in Bucha.

Russia has denied any involvement in civilian deaths in Bucha.

But Russian officials confirmed on Friday that their forces carried out an air strike on Kyiv a day earlier during a visit by UN chief Antonio Guterres, the first such attack on the capital city in nearly two weeks. A journalist died in the attack.

Ukraine’s Deputy Prime Minister Iryna Vereshchuk meanwhile reported that 14 Ukrainians including a pregnant soldier had been freed in the latest prisoner exchange with Russian forces.

She did not say how many Russians had been returned.

Kyiv has admitted that Russian forces have captured a string of villages in the Donbas region.

“Even if there has been some advance by Russian troops on the ground, it is not very fast,” Russian military expert Alexander Khramchikhin told AFP.

But Russian Foreign Minister Sergei Lavrov said that the “special military operation . . . is proceeding strictly according to plan”, China’s official Xinhua news agency reported.

More Western armaments are due to arrive in Ukraine, with US President Joe Biden on Thursday seeking billions of dollars from Congress to boost supplies.

French President Emmanuel Macron said on Saturday that his country would also “intensify” military and humanitarian support.

Russia’s defence ministry in recent days has said its forces have struck Ukrainian military sites hosting Western-supplied weapons and ammunition, a claim denied by a senior NATO official.

Russia has warned Western countries against sending more military aid.

“If the US and NATO are really interested in resolving the Ukraine crisis, then first of all, they should wake up and stop supplying the Kyiv regime with arms and ammunition,” Lavrov said.

And with Sweden pondering a bid for NATO membership, defence officials there said Saturday that a Russian reconnaissance plane had briefly violated the northern country’s airspace a day earlier.