Conflicting reports put the death toll at between eight and 13.
The trolleybus in Donetsk had all its windows blown out, with pools of blood on the floor.
There was also major shrapnel damage to a nearby building.
“I saw dead people on the floor, and injured women screaming for help,” said Ivan, a 74-year-old who lives in the building next to the blast.
He had a cut face from his windows, which had been blown out by the explosion.
“It was a scene of total chaos.”
As has happened many times during the conflict, both sides had drastically differing versions of the attack.
Rebel gunmen on the scene said the attack had been carried out by a pro-Ukrainian diversionary group, though there was no way of confirming this immediately.
Ukrainian officials said their forces were located too far from the spot to be responsible, with the prime minister, Arseniy Yatsenyuk, calling it “a terrible act against humanity” committed by “Russian terrorists”.
The location did indeed appear to be out of mortar range of Ukrainian positions, though it also seemed unlikely that separatists would have any reason to carry out the attack.
One local person said the rebels had been repairing tanks in a factory across the street from the blast, which was perhaps the target of the attack.
Rebels on the scene said 13 people had died, but the morgue said it had received eight bodies from the scene.
The deaths came after Ukrainian forces admitted they had lost control of Donetsk airport late on Wednesday, and foreign ministers of Russia and Ukraine agreed as a meeting in Berlin to move artillery back from the frontline.
A statement from the meeting, also attended by France and Germany’s foreign ministers, said the quartet had agreed artillery should be withdrawn in accordance with a ceasefire agreement signed in Minsk in September.
However, so far there has been little sign that a ceasefire can hold, and in recent days a new wave of heavy fighting has broken out, notably at the airport, a symbolic battlefield where Ukrainian forces appear to have sustained many casualties.
One Ukrainian soldier, captured at the airport, was brought by rebels to the scene of the bus attack on Thursday morning, where locals shouted at him and tried to hit him.
He was swiftly driven off.
Rebel leader Alexander Zakharchenko said he would make other Ukrainian prisoners walk from the airport to the scene of the bus attack and “ask for forgiveness”, Interfax reported.
On Wednesday, Moscow and Kiev again traded mutual accusations of warmongering, as fighting and heavy shelling continued on the ground in east Ukraine and residential areas continued to come under fire.
Ukraine’s president, Petro Poroshenko, told the World Economic Forum in Davos there were currently more than 9,000 Russian soldiers on the ground in east Ukraine, and said it was up to Moscow to end the conflict, which has so far cost almost 5,000 lives.
“The solution is very simple – stop supplying weapons … withdraw the troops and close the border. Very simple peace plan. If you want to discuss something different, it means you are not for peace, you are for war,” he said.
In Moscow, however, Russia’s foreign minister, Sergei Lavrov, said it was down to Kiev to stop its assault and begin negotiations, and called for an immediate ceasefire.
He again denied that Russian troops were active in Ukraine, saying no proof had been offered, despite evidence of secret military funerals inside Russia, and repeated sightings of Russian military hardware inside Ukraine.
However, despite all the signs that Russia has backed the rebels with firepower and at times manpower, Ukraine has not offered any evidence that would suggest Poroshenko’s 9,000 figure is accurate.
Privately, some rebels in Donetsk admit they have received help from Moscow, but deny that the number of Russian soldiers present is in the thousands.
With Russia’s economy in trouble, there have been suggestions that the president, Vladimir Putin, may be looking for a way out of the conflict, and Lavrov again said Kiev should begin talks with representatives of the Donetsk and Luhansk “people’s republics”.
A longstanding pattern whereby rebels shell Ukrainian positions from close to residential areas, the Ukrainians fire back imprecisely and civilians die has been continuing in recent days, with a new wave of fighting breaking out that may be about strengthening positions ahead of a putative meeting between Putin and Poroshenko.
The meeting was planned to take place in the Kazakh capital of Astana last week, with the German chancellor, Angela Merkel, and the French president, François Hollande, in attendance, but it was postponed.
Instead, the foreign ministers of the four countries met in Berlin late on Wednesday.
“The Russian objective seems to be to sustain a problem rather than find a solution,” said one western diplomat in Kiev.
The sides agreed to a ceasefire in Minsk in September, but the truce was broken almost as soon as it started and has collapsed completely in recent days.
The most intense fighting has come at Donetsk airport, which until last May was a shiny new complex built for the Euro 2012 football tournament, but has now become a hugely symbolic military prize.
It has been controlled by the Ukrainians since the beginning of the conflict despite several rebel attempts to seize it, and the airport’s defenders, colloquially known as “cyborgs”, have become cult heroes in Ukraine.
However, a renewed rebel offensive has dislodged them from most of the airport, and late on Wednesday evening Ukrainian volunteer brigades admitted they had lost all control over the complex, blaming poor decision-making among the army leadership.
Several Ukrainian soldiers were wounded there on Monday after shelling caused the collapse of a ceiling.
Rebel forces took eight Ukrainian soldiers prisoner who were then interviewed on Russian television.
Russian journalists also showed what they said were the corpses of Ukrainian soldiers inside the airport building.
Source: The Guardian