NATO soldiers gave first-aid to bloodstained comrades beside the wrecked remains of a military vehicle that was thrown to the side of the road, while city residents carried injured Afghans to hospital.
The attack was mounted during morning rush-hour traffic outside the Supreme Court and near the heavily-fortified US embassy, on a route used by NATO convoys every day.
"We can confirm three International Security Assistance Force (ISAF) members died as a result of an enemy attack in Kabul today," the NATO coalition said in a statement.
The nationalities of the two other ISAF victims was not immediately known.
More From This Section
One of the first people on the scene was Sayed Mustafa Saadat, 27, captain of the Afghan national rugby team, who was returning from an early morning training session.
"I rushed to help survivors. I picked up a local man who had a broken leg and was badly burnt," he told AFP.
"I carried him all the way to the hospital, running. It took about 10 minutes, but I don't know if he survived."
The NATO force has now 41,000 troops in Afghanistan, with about 29,000 from the US and just 300 from Poland.
All NATO combat soldiers will withdraw by December after 13 years of fighting the Taliban, with a follow-on mission of about 12,000 troops likely to stay on into 2015 on training and support duties.
The Taliban quickly claimed responsibility for the attack via a recognised Twitter account.
Afghanistan is stuck in a political stalemate over election results, with the two presidential candidates in talks to resolve the prolonged dispute about who won the June 14 vote to replace President Hamid Karzai.