Rebels fleeing from the city of Slovyansk vowed to regroup elsewhere and fight on.
President Petro Poroshenko said in a statement that government troops took Slovyansk, a city of about 100,000 that has been a center of the fighting between Kiev's troops and the pro-Russian insurgents, after a night of fighting.
Poroshenko ordered the armed forces to raise the Ukrainian flag over the city, which has been under control of the rebels since early April when they seized the city's administrative and police buildings.
Andriy Lysenko, spokesman for the National Security and Defense Council, said mopping-up operations were continuing.
"Slovyansk is under siege. Now an operation is going on to neutralize small groups hiding in buildings where peaceful citizens are living," Lysenko told journalists.
Andrei Purgin of the separatist Donetsk People's Republic told The Associated Press that rebels were evacuating, but claimed the army's campaign had left the city "in ruins."
In the city of Donetsk, south of Slovyansk, the streets were deserted on Saturday as local officials urged people to stay at home. They said a battle was ongoing near the Donetsk city airport, but did not provide details.
"Militants from Slovyansk and Kramatorsk have arrived in Donetsk," said Maxim Rovinsky, spokesman for the city council.
Purgin claimed 150 fighters injured in Slovyansk were in Donetsk for treatment.
"More than a hundred militiamen have been killed in the last three days," said Viktor, a 35-year-old Slovyansk native who had a shrapnel wound in his leg. "The mood is very bad. It seems that we've lost this war. And Russia isn't in a hurry to help."
Alexei, a driver and local Slovyansk resident who would not give his last name for fear of reprisal, told the AP by phone that he heard bombing throughout the night. When the bombing stopped in the early morning, he left his house and saw that all the rebel checkpoints were abandoned. He said there was some damage to buildings in the center of the city, but said much of the rest of the city had been left untouched.
A rebel commander who would only give his nom de guerre as Pinochet told the AP that rebels had relocated to the nearby town of Kramatorsk, 20 kilometers (12 miles) south of Slovyansk. But outside Kramatorsk, an AP reporter saw an abandoned checkpoint and several hundred rebels, armed and in uniform, driving in minibuses in the direction of Donetsk.
The capture of Slovyansk was a major victory for the Ukrainian army, which has often appeared feckless in the months-long campaign against the rebels. On Thursday Poroshenko shook up his defense team, appointing Ukraine's third defense minister since the downfall of the former president in February.
Some rebels played down the significance of Ukraine's advances. Pavel Gubarev, the self-described governor of the Donetsk People's Republic, wrote online that the rebels had staged a tactical retreat.
"Kutuzov also retreated, as that was the plan," he wrote, referring to the 19th century general Mikhail Kutuzov who is credited with defeating Napoleon's forces in Russia. "In general, Russians only retreat before a decisively victorious battle."
Others in the rebels' ranks pleaded publicly with Russia to assist the rebels in their cause. In a video posted online late on Friday, Igor Girkin, the self-described "commander in chief of the Donetsk People's Republic," said his men had "lost the will to fight."
"They want to live in Russia," said Girkin, also known by his nom de guerre, Igor Strelkov. "But when they tried to assert this right, Russia doesn't want to help." He said he believed the troops had only "two or three weeks" before they were defeated if Russia did not step in.
The Russian Foreign Ministry said it was bolstering efforts to deliver medical aid to those in eastern Ukraine, but made no mention of the rebels' defeat in Slovyansk or plans to provide military aid.
Rebel leaders have pleaded with the Kremlin for military assistance in the past, and some prominent Russian nationalists have publicly taunted Putin, accusing him of cowardice. Such criticism could resonate with the broader Russian public, which has been heavily influenced by Russian state television's characterization of the Kiev government as a "fascist junta" that is killing Russian-speakers.
Poroshenko had said Friday he was ready to conduct another round of talks between representatives from Ukraine, Russia and the rebels. But with the rebels reeling from their attack Saturday, it was unclear whether negotiations could take place.
"That possibility still exists," said Purgin. "We don't exclude that the talks could happen in Minsk, because the situation in Donetsk has escalated. Different options are now under discussion."