LVIV, Ukraine—Ukrainian forces cleared mines and counted the dead around Kyiv on Saturday following recent Russian troop withdrawals, as Moscow shifted military operations to the country’s east.

Ukrainian troops had retaken control of the entire Kyiv region, said Ukraine’s deputy defense minister, Hanna Malyar. Russian forces, in their partial pullback, gave up scores of towns and villages after Ukrainian resistance led to heavy losses.

“They left in their wake a complete disaster and many dangers,” Ukrainian President Volodymyr Zelensky said in an overnight address, referring to the Russians. He added that the region remained unsafe. “Firstly, the bombing might continue. Secondly, they are mining this entire territory,” he said.

Mr. Zelensky said retreating Russian forces had placed mines in houses, laid trip wires and booby-trapped corpses.

The Ukrainian president singled out the cities of Kharkiv and Mariupol as potential targets of renewed attacks as Russia repositions its forces. “In the east of our country, the situation remains extremely difficult,” Mr. Zelensky said. “I emphasize once again: Hard battles lie ahead.”

A gas station in the village of Stoyanka near Kyiv.

Photo: sergey dolzhenko/EPA/Shutterstock

The Kyiv regional military administration published a video on Saturday saying Ukrainian armed forces had retaken more than 30 settlements around the capital. Speaking in one of the villages, with charred Russian tanks in the background, the head of the Kyiv military administration, Oleksandr Pavluk, said Ukrainian forces had ambushed a retreating Russian column.

The Ukrainian military is assessing the damage in each town, he said, and emergency services are clearing explosives. “After this, we will give permission to local residents to return,” Mr. Pavluk said.

Mykhailo Podolyak, an adviser to Mr. Zelensky, posted a photograph on Twitter showing the bodies of three men in the town of Bucha he said Russian forces had shot dead. One appeared to have his hands bound.

“These people were not in the military. They had no weapons. They did not pose a threat. How many more such cases are happening right now in the occupied territories?” said Mr. Podolyak.

The body of a Ukrainian photojournalist who went missing while working north of Kyiv nearly three weeks ago was found in the district of Vyshhorod. Maksym Levin died after being shot twice by Russian forces, according to a statement from Ukraine’s prosecutor general. Another photographer who was with him remains unaccounted for.

The General Staff of the Ukrainian armed forces said Russian troops are likely to maintain some positions around Kyiv and Chernihiv, a city to the north of the capital, to tie Ukrainian forces down while pressing to complete the takeover of Kherson in the south, as well as Luhansk and Donetsk in the east.

To avoid a protracted conflict that would bleed its military, Mr. Podolyak predicted Russia would relinquish all territories except those in the south and east, where it could dig in and position air defenses to minimize losses. “Without heavy weapons, we won’t be able to drive Russian forces out,” he said.

As Russian military units have moved back from Kyiv, a large number of additional troops have passed into northeastern Ukraine, according to the head of the regional military administration in Sumy.

Southeast of Kyiv, Russia fired missiles overnight at the city of Poltava and conducted strikes on industrial facilities in Kremenchuk early Saturday. Dmytro Lunin, head of the Poltava regional military administration, said rescue workers were extinguishing a blaze in Kremenchuk, adding that there were injuries and possibly deaths.

Burned Russian armored vehicles on the outskirts of Kyiv.

Photo: ronaldo schemidt/Agence France-Presse/Getty Images

A local resident in the village of Dmytrivka, near Kyiv.

Photo: sergey dolzhenko/EPA/Shutterstock

The Russian Defense Ministry said its forces had destroyed gasoline and diesel fuel-storage facilities at the Kremenchuk oil refinery, which has supplied Ukrainian troops in central and eastern parts of the country, using high-precision long-range airborne and sea-based weapons.

The strike came after Moscow accused Ukraine of firing missiles at an oil depot in Belgorod, a Russian city 20 miles from the Ukrainian border, in a predawn helicopter raid on Friday. A Russian investigative agency on Saturday said it had opened a criminal case against Ukrainian military personnel, saying they committed a terrorist act by executing the raid.

Fierce fighting continued around the strategic eastern city of Izyum. Russian forces fired three short-range ballistic missiles from Crimea, which was annexed by Moscow in 2014, into the region of Odessa, on the Black Sea coast. The head of Odessa’s regional military administration, Maksym Marchenko, said there were casualties, without distinguishing between military or civilian losses.

Russian forces opened fire on protesters in the southern Ukrainian town of Enerhodar, site of Europe’s largest nuclear power plant, on Saturday, after residents demonstrated in support of Ukraine, singing the national anthem.

A video posted on the official Telegram channel of Energoatom, the Ukrainian state company that operates the nuclear plant, showed people scattering under fire. The company said Russian forces detained some people as the crowd dispersed.

The mayor of Tavriisk in the Kherson region has been missing since Friday, the town council said. The head of the Melitopol district council, Serhiy Priyma, has also been held for more than two weeks, along with five school principals. “We are trying to find out from the occupiers what the demands are for his release, but so far they are not saying anything,” said the head of the Melitopol district military administration, Ihor Sudakov.

The towns near Kyiv that were recaptured by Ukrainian forces included Ivankiv, Dymer, Irpin, Bucha, Vorzel and Hostomel, where Russian paratroopers descended on Feb. 24, the first day of the invasion.

“Hostomel has been liberated but is still being shelled and there are many explosives in the area,” said Taras Dumenko, head of the Hostomel village military administration.

Kyiv regional police chief Andriy Niebytov said police and rescue workers were going house to house in Hostomel. “We understand there might be people under the wreckage,” he said. Bodies are being taken to the morgue to establish the cause of death.

Ukrainian lawmaker Olha Vasilevska-Smahliuk said a two-day curfew had been imposed in recaptured towns to conduct mine sweeps, but trucks carrying humanitarian aid would be allowed to enter.

In Bucha, officials described widespread looting and the local council said a confectionery factory had been mined by the Russian military before departing. Oleksandr Bursuk, the head of a linen factory in Dymer, said workers’ clothing and personal effects had been looted, as well as a delivery truck, which he said he tracked to Belarus.

“There is no occupation army in Dymer anymore,” said Mr. Bursuk. “As a farewell, our ‘liberators’ were looting everything they could.”

A family seeks refuge in abandoned apartments of a residential building in Mariupol.

Photo: ALEXANDER ERMOCHENKO/REUTERS

A destroyed building in Kharkiv, Ukraine.

Photo: fadel senna/Agence France-Presse/Getty Images

A man returning to the village of Velyka Dymerka filmed the damage he said Russian forces had inflicted on his house. A flat-screen TV had been stabbed with a saber. In a kennel outside, his dog lay dead, apparently shot. “Why would you kill it?” he said in the video.

Mariupol, where evacuation efforts have faced complications, remained a locus of tension. Deputy Prime Minister Iryna Vereschuk said more than 4,200 people had been evacuated on Saturday from towns and cities under fire, including 765 from Mariupol.

But thousands more civilians remain trapped there, officials said.

A team from the International Committee of the Red Cross heading to Mariupol to assist in civilian evacuations was unable to make it to the city on Friday and would try again on Saturday, the group said. Officials with the group didn’t respond to an email seeking an update on the status of the convoy.

United Nations relief convoys have also failed to reach the city.

The mother of a senior lieutenant mourns his death as solders carry his coffin during his funeral in Lviv, western Ukraine.

Photo: Nariman El-Mofty/Associated Press

Corrections & Amplifications
Taras Dumenko is the head of the Hostomel village military administration, and Dmytro Lunin is the head of the Poltava regional military administration. An earlier version of this article misspelled their last names as Doumenko and Lulin, respectively. (Corrected on April 2.)

Write to Isabel Coles at isabel.coles@wsj.com