Among the dead were two Malian soldiers, while the body of a white man was seen lying sprawled outside the hotel in the town of Sevare, military sources said.
The attackers launched the assault on the Byblos hotel in the early hours of Friday in what military sources and local residents said appeared to be a bid to abduct foreign guests.
Malian troops surrounded the hotel and shot dead one of the attackers who was wearing an explosive belt, the military source said.
"It is still not over," the source said.
Also Read
At least five foreigners -- three South Africans, a French national and a Ukrainian -- were registered at the hotel, according to several sources.
"The Fama (Malian armed forces) have sealed off the area... And the operation is still going on," another military source told AFP from Gao, the main town in northern Mali.
It is the third assault in just a week in the west African country, which is still struggling to restore stability despite a landmark peace deal agreed in June to end years of unrest, ethnic divisions and jihadist attacks particularly in the north.
"The shooting is still going on but I don't know who is shooting," she told AFP.
Initial reports said another hotel, the Debo, had been attacked but the military source confirmed it was the Byblos.
A number of foreigners have been kidnapped by Islamist militants in Mali in recent years and at least two are still being held hostage by Al-Qaeda's front group in the region.
"The army is trying to find (the attackers) and remove them," a Mali army official in Bamako told AFP, saying the operation was delicate because of the presence of guests in the hotel.