The Al-Qaeda linked Shebab claimed responsibility for the dawn attack at the Sahafi hotel, which is popular with members of parliament, government employees and businessmen.
The Shebab said they were still fighting security forces, but African Union soldiers, battling alongside government troops, said they had taken control of the building.
"Attackers exploded a car bomb to gain entry before going inside... We have reports of 12 dead," policeman Abdulrahid Dahir said.
Shebab commandos then stormed inside, with witnesses reporting intense gunfire and several loud blasts.
More From This Section
"There was a huge explosion and people around the entrance were killed," said Mohamed Ismael, a witness, who was nearby when the attack began.
Shebab insurgents, who are fighting to overthrow the internationally backed government in Mogadishu, have carried out a string of attacks on hotels in the capital.
Like other international hotels in Mogadishu, the Sahafi is heavily fortified.
It was the site of the kidnapping of two French security agents in 2009, one of whom later escaped while the other was killed by the Shebab during a failed rescue attempt in 2013.
Shebab spokesman Abdulaziz Abu Musab claimed the gunmen had overrun the hotel, which is situated near the major K4 roundabout.
"The mujahedeen fighters took control of the Sahafi hotel, where apostates and invading Christians were staying," he said in a statement.
But the African Union mission in Somalia, AMISOM, a 22,000-strong force fighting the Shebab, said they fought alongside government troops and had secured the hotel.
"Somalia government forces and AMISOM have taken control," the AU force said in a brief statement.