No group immediately claimed responsibility for carrying out the attack, one of the deadliest to hit civilians in Mogadishu in weeks.
“It was an ugly scene with blood everywhere,” Farah Abdi, another witness, said. “I could not count the dead, I just glanced at once and I ran away for my life.”
Armed groups fighting against the transitional government and their Ethiopian allies have previously used roadside bombs to attack military convoys.
The Ethiopian forces arrived in Somalia in late 2006 to help government troops push out the Islamic Courts Union, which had taken control of Mogadishu and much of the south of the country.
The government signed a UN-sponsored peace agreement with the armed opposition on June 9 in Djibouti, but the deal led to a split in the opposition movement as one faction demanded Ethiopian troops withdraw before talks.
International human rights groups and aid agencies say that civilians have borne the brunt of the fighting between the opposition and government forces, with at least 6,000 killed and hundreds of thousands displaced in the past year.