At least 12 people are thought to have been killed, including gunmen and Malian soldiers, after suspected Islamist insurgents battled the army in the central Malian town of Sevare.
Four United Nations workers survived the siege, but at least four other foreign nationals are feared to have died at and around Hotel Byblos.
One South African has been confirmed dead by officials.
The gunmen had retreated to the hotel after attacking a nearby army base.
No-one has claimed responsibility for the attack.
At least three gunmen are dead and seven have been arrested, while five Malian soldiers were said to have been killed in the attack.
The South African who was killed in the attack worked for an aviation company used by the UN in Mali, a South African foreign ministry spokesman tweeted.
Another two South Africans, one Russian and one Ukrainian walked out alive from the hotel, after a pre-dawn raid by Malian paramilitaries.
The men are pilots and engineers contracted by Minusma, the United Nations mission in Mali.
A UN spokeswoman said the survivors had not been held hostage. They had managed to hide in the hotel during the siege.
“The Minusma contractors were never held hostage. The whole time they were inside the hotel, the gunmen did not know of their presence. They were hiding and we managed to keep in contact with them,” she told the BBC.
“The gunmen had retreated to the hotel after attacking the Malian army facility which is only 20 metres from the hotel.”
A spokesman for the Malian forces said four bodies were found inside the Byblos Hotel after the early raid.
Mali has been fighting Islamist rebels in the north for a number of years.
Earlier, Minusma said it believed a member of its international personnel was killed in the attack, but gave no further details.
A total of at least 13 people are thought to have died since gunmen swept through Sevare on Friday morning on motorbikes, attacking an air force base before taking over the hotel.
It is unclear which group was behind the attack, but Islamist militants have claimed responsibility for other recent attacks in the south and centre of Mali.
The town, which is about 600km (370 miles) north-east of the capital, Bamako, is a trading hub that serves the historic riverside city of Mopti.
A local resident told the BBC on Friday that it was the first time the town has faced an attack like this.
“Since the beginning of the fighting in Mali, we haven’t experienced such a situation in Sevare.”
“We would expect these things to happen in Gao or Timbuktu, but this the first time it has happened in Sevare,” he said.
The UN force in Mali took over responsibility for security in the country from French troops in July 2013.
France, the former colonial power in Mali, intervened in the country after Islamist militants threatened to march on Bamako in January 2013.
Militancy in Mali
- October 2011: Ethnic Tuaregs launch rebellion after returning with arms from Libya
- March 2012: Army coup over government’s handling of rebellion
- April 2012: Tuareg and al-Qaeda-linked fighters seize control of north
- June 2012: Islamist groups capture Timbuktu, Kidal and Gao from Tuaregs, start to destroy Muslim shrines and manuscripts and impose Sharia
- January 2013: Islamist fighters capture a central town, raising fears they could reach Bamako. Mali requests French help
- July 2013: UN force, now totalling about 9,750, takes over responsibility for securing the north after Islamists routed from towns
- July 2014: France launches an operation in the Sahel to stem emergence of jihadist groups
- 2015:Sporadic attacks continue in desert area of northern Mali, blamed on Tuareg and Islamist groups.