Many of the children drowned as ditch water gushed into the overturned bus in eastern Jiangsu province, officials said.
The tragedy comes amid a national outcry over recent similar incidents.
Only on Sunday, the government issued draft measures to guarantee children’s safety, including compulsory checks on buses and their drivers.
Monday’s accident happened as the 29 children were being driven home from school along a rural road in Feng county.
The bus driver – who officials say has now been taken into custody – had apparently swerved to avoid a motorised rickshaw.
Nearby factory workers heard cries and rushed to help the children, many of whom were trapped at the bottom of the overturned bus.
“The water was not very deep, probably more than a metre (yard) or so – up to an adult’s waist – but it was deep enough to drown some of the children,” Zhang, the wife of the factory owner, told the Associated Press.
Officials have said the bus could carry 52 people so was not overloaded at the time of the accident.
They have been keen to draw a distinction between a crash in Gansu province last month in which 19 kindergarten children died, the BBC’s Michael Bristow in Beijing reports.
On that occasion, more than 60 youngsters were crammed into a minibus that originally had just nine seats.
Correspondents say school buses are often overloaded in China, and children are increasingly being forced to travel further as schools close in rural areas hit by migration to the cities.