Anil Jasinghe, director of the National Hospital in Colombo, said: "Twenty people were admitted to hospital with blast wounds.
"Four people were killed, including two soldiers."
Seven people are said to be in a critical condition.
Most of those admitted to hospital are said to be civilians, although a few soldiers are being treated for shrapnel wounds.
Muralidhar Reddy, a special correspondent with the Hindu daily, told Al Jazeera from Colombo: "The latest is that this bus was coming from the military headquarters, which is about a kilometre away from the blast site."
He said the rebel Tamil Tigers had neither claimed responsibility for the blast nor denied it.
The military base holds both the air force and army headquarters.
Hector Weerasinghe, the Colombo National Hospital's director, said most of the victims were civilians.
A similar roadside bomb killed 16 people on December 5 in the north-central district of Anuradhapura.
Another 19 people were killed in a bomb attack outside a clothing store in the Colombo suburb of Nugegoda on November 28.
Wednesday's attack came the day after an assailant shot dead a prominent Tamil MP inside a Hindu temple in Colombo.