Government troops in eastern Ukraine have won back the port city of Mariupol from pro-Russian separatist rebels after heavy fighting.
Five pro-Russian rebels were reported killed and four government soldiers injured in the city in Donetsk region.
Elsewhere, Ukraine's gas dispute with Russia showed no sign of resolution days before a Russian payment deadline.
Ukrainian Prime Minister Arseniy Yatsenyuk gave orders to prepare for supplies being cut off from Monday.
Russian President Vladimir Putin's spokesman said he had no information about whether negotiations with Kiev could be restarted.
Russia has been charging Ukraine $485.50 (£289; 359 euros) per 1,000 cubic metres, the highest tariff in Europe, since relations soured after the downfall of Ukraine's elected pro-Russian President, Viktor Yanukovych, in February.
Previously, Ukraine paid a discounted rate of $268 per 1,000 cubic metres.
Hundreds of combatants and civilians have been killed since pro-Russian separatists in the Donetsk and neighbouring Luhansk regions declared independence after holding referendums last month, which were deemed illegal by the government in Kiev.
The rebellion began after February's ousting of the elected President, Viktor Yanukovych, whose last-minute decision not to sign a landmark treaty with the EU in November sparked mass protests in Kiev.
In other developments
- Russia is to protest officially after a Ukrainian armoured troop carrier allegedly crossed on to its territory on Thursday night, near the town of Millerovo in the Rostov region. The soldiers withdrew but the vehicle was seized by Russian border guards, the Kremlin said
- Ukraine protested after a Russian helicopter allegedly entered its airspace
- A bomb destroyed a minibus in the city of Donetsk on Thursday evening, killing two people and injuring two. The vehicle belonged to Denis Pushilin, head of the self-styled Donetsk People's Republic, who was not using it at the time
- A lorry-mounted multiple rocket launcher was found partially destroyed after an attack in the Dobropillia area of Donetsk, in which a civilian was reportedly killed
- Dnipropetrovsk region governor Ihor Kolomoyskyy proposed building a security wall along the border with Russia
Interior Minister Arseny Avakov said government forces had raised the national flag over Mariupol's council building.
President Petro Poroshenko marked the occasion by giving orders for the port city, which lies on the Sea of Azov in the south of Donetsk region, to be made the temporary capital of the region, replacing Donetsk city where rebels are largely in control.
Confirming four soldiers had been injured, Ukraine's National Guard said its recently formed Dnepr and Azov "volunteer" units had been used in the operation.
About 100 soldiers could be seen emerging triumphantly from previously rebel-occupied buildings, shouting the name Azov and singing the Ukrainian national anthem, an Associated Press correspondent reports from the city.
A rebel source told Russia's Interfax news agency five fighters had been killed.
Friday's operation seems to have been a success after many setbacks for the Ukrainian forces, the BBC's David Stern reports from the Ukrainian capital, Kiev.
However, Mariupol has been fought over intensively before and it cannot be ruled out that the insurgents may return to try to take it back again, our correspondent adds.
Rebels elsewhere in eastern Ukraine have confirmed they now have three tanks.
The appearance of the tanks, filmed in various towns in the Donetsk region, sparked a row between Kiev and Moscow. with Russia denying Ukrainian allegations that the tanks had entered Ukraine from its territory.
A paramilitary in the rebel-held town of Snizhne, where the tanks were first sighted, told Reuters news agency: "We got them from a military warehouse."
Contrary to initial reports that the tanks are Russian-made T-72s, one of the most commonly used models in late Soviet times, rebels and bloggers have identified them as T-64s, an older model manufactured in Ukraine.
One amateur video shows the tanks passing through the town of Torez.