Airstrikes and helicopter gunships were called in during the battle as the Kiev government vowed to push on with its “anti-terrorism operation” until “not a single terrorist remains on the territory of Ukraine”.
Alexander Lukyanchenko, mayor of Donetsk, said 40 people had been killed; 38 of them in fighting around the airport.
The transport hub – which serves the city of a million people – had been taken over by rebels on Monday but their success was short-lived.
“The airport is completely under control,” interior minister Arsen Avakov told journalists in Kiev. “The adversary suffered heavy losses. We have no losses.”
Late yesterday afternoon the Ukrainian interior ministry said five soldiers had been killed on active service in south-east Ukraine, and gunfire was still echoing across Donetsk.
Leonid Baranov, of the self-proclaimed Donetsk People’s Republic, said about 100 separatists had died in the fighting, and that the morgues were overflowing with the dead.
At least two civilians were reportedly killed in the fighting that rocked the city and prompted some residents to flee despite assurances that essential services and food supplies would be maintained.
In a related incident the Organisation for Security and Co-operation in Europe reported it had lost contact with four observers in Donetsk.
“The team was on a routine patrol east of Donetsk when contact was lost [on Monday evening],” the Vienna-based neutral organisation said in a statement. “We have been unable to re-establish communication.”
The heavy fighting in Donetsk emphasised the challenges ahead for Petro Poroshenko, Ukraine’s president elect, who won the presidential elections on Sunday in the first round.
Speaking in Kiev he compared the rebels to “Somalian pirates” that have terrorised the waters off the Horn of Africa and added that they had no interest in talking with the Kiev government. “They just want to preserve their illegal situation there, where they have a so-called bandit state,” he said.
“The efficiency of the anti-terrorist operation will be sharply increased,” he added. “It shouldn’t last for months – it should take a few hours.”
Russia – which stands accused of fomenting the violence in eastern Ukraine in order to destabilise the Kiev government – said it respected the election result but called for a halt to the offensive. The Kremlin said president Vladimir Putin had spoken to Matteo Renzi, the Italian prime minister, by telephone, and “underscored the need for an immediate halt to the punitive military operation in the south-eastern regions and the establishment of peaceful dialogue between Kiev and representatives of the regions”.
The Russian foreign ministry said it had no plans to invite confectionery tycoon Mr Poroshenko to Moscow but urged him to implement the peace deal agreed in Geneva on 17 April.
Retaking the airport could instil new confidence that the rebels can be defeated.
At times the Kiev-led offensive has appeared lacklustre, and its troops unwilling to engage the enemy, prompting speculation it would end in defeat.