Frustration over gambling debts drove a 25-year-old man to set fire to a bus in Guangzhou, killing two and injuring 32 others, during rush hour on Tuesday, municipal police have said.
Authorities detained the suspect yesterday and said he had confessed.
Witnesses described hearing a loud bang as the bus approached Dunhe station in the Haizhu district just after 7.40pm. Flames engulfed the vehicle and people scrambled to get off. The bodies of the two victims were found in their seats. Firefighters put out the blaze within about 15 minutes.
The suspect, from Hengyang in Hunan province, set fire to the vehicle "to vent his anger over gambling losses", a police statement said.
They have not offered details on what materials the suspect used in the attack.
The People's Daily, however, reported on its official Twitter feed  today that the Qinghai civil aviation public security bureau found that the blast was caused by "passengers' abandoned fireworks".
At least eight people remain in critical condition in hospital, among them a woman who is three months pregnant. Most of the victims suffered burns.
Watch: Surveillance video of Guangzhou bus explosion
A 23-year-old man who works as a van driver for a furniture shop was just metres from the bus station at the time.
"I heard a shocking bang and thought car tyres had exploded. Someone said a man had thrown a bag onto the bus, and in just a few seconds, the bus caught fire and people were running for their lives," the man said, declining to be identified.
"We grabbed fire extinguishers and started spraying burned people. People were crying for help and screaming for their lives … The skin of many victims was burned off, some were burned and didn't have any pants, others had their hair burned off and many were covered with large blisters. It was horrible - none of us could sleep last night."
Another witness, a 28-year-old man from Yunfu in Guangdong, said he was afraid to take public buses after several have been targeted in attacks.
"A woman in her 30s asked me how badly burned she was … I didn't have the heart to tell her. All I could do was tell her to remain still while waiting for the ambulance," he said.
Residents got another scare with a false report of an explosion at a cathedral in the afternoon, leaving the area sealed off from the public and fire engines standing by for hours. The Ministry of Public Security in Beijing called an emergency meeting urging local police to prioritise safety of public transport.