The Ukrainian flag fluttered over the regional government headquarters in the strategic port city of Mariupol on Friday after government forces reclaimed the city from pro-Russian separatists in heavy fighting, and said they had regained control of a long stretch of the border with Russia.
The advances are significant victories for the pro-European leadership in a military operation to crush the rebellion, which began in east Ukraine in April, and hold the country together. Parallel peace moves are only moving slowly, however, and Russia is threatening to cut gas supplies to Ukraine from Monday in a row over prices.
In central Mariupol, police cordoned off several streets, where roadblocks of sandbags and concrete blocks, once manned by rebels, were riddled with bullet holes, and the burnt-out hulk of an armored personnel carrier with rebel insignia smoldered.
"At 10:34 a.m. (0734 GMT), the Ukrainian flag was raised over City Hall in Mariupol," Interior Minister Arsen Avakov wrote on Facebook, less than six hours after the attack began on the city of 500,000, Ukraine's biggest port on the Azov Sea.
A ministry aide said government forces had attacked after surrounding the rebels and giving them 10 minutes to surrender. At least five separatists and two servicemen were killed before many of the rebels fled.
A group of about 100 Mariupol residents, who had gathered in the center to show their opposition to the government's actions, exchanged obscenities and crude gestures with Ukrainian soldiers driving through town in a column of armored trucks.
"The government brought everything here, including a cannon ... people were not allowed to come and witness how the government was shooting its own citizens," 52-year-old Andrei Nikodimovich said.
Mariupol, which has changed hands several times in weeks of conflict, is strategically important because it lies on major roads from the southeastern border with Russia into the rest of Ukraine, and steel is exported through the port.
Regaining full control of the 2,000-km (1,200-mile) frontier is also vital for the government because it accuses Moscow of allowing the rebels to bring tanks, other armored vehicles and guns across the border.
Avakov said government forces had won back control of a 120-km (75-mile) stretch of border that had fallen to the rebels, but it was unclear who controlled other parts of the frontier.
Impasse at gas talks
The rebels rose up in the Russian-speaking east and southeast after Russia annexed Crimea in March following the overthrow of pro-Russian president Viktor Yanukovich, who had triggered protests by spurning trade and political pacts that would have deepened ties with the European Union.
The new president, Petro Poroshenko, intensified the military operation against the rebels after he was elected on May 25, but is also trying to win support for a peace plan.
On Friday, one separatist leader, Denis Pushilin, said he could be open to the idea of talks provided there were mediators present, including Russia. "If an international organization were also involved ,that would be a plus too," he said in an interview on Russian television.
Poroshenko's aides say progress has been made at initial meetings with a Russian envoy and that any immediate threat of a Russian invasion has receded, but tensions have risen at talks on how much Ukraine should pay for Russian natural gas.
Ukraine said it was preparing for gas supply cuts on Monday, the deadline for it to settle $1.95 billion in unpaid bills. This could disrupt supplies to the European Union as about half of its sizable gas imports from Russia flow via Ukraine.
Political ties have also been strained by the appearance of several tanks in east Ukraine. Avakov accused Russia on Thursday of allowing the rebels to bring them across the border and Poroshenko told Russian President Vladimir Putin by phone that the situation was "unacceptable".
Evidence that Russia is directly assisting the rebels militarily would implicate Moscow in the uprising, making a mockery of its denials of a role in the fighting.
(Additional reporting by Pavel Polityuk and Natalia Zinets in Kiev, and Vladimir Soldatkin in Moscow; writing by Timothy Heritage and Alessandra Prentice; Editing by Kevin Liffey)