The deadly accident occurred in the Charente-Maritime département in western France.
The school bus, which was carrying 17 people, hit a truck carrying rubble around 7.15am near the fire station in the town Rochefort.
Six pupils were killed and two were left seriously injured, and were rushed to emergency care. Another nine sustained minor injuries.
A local police union official, Jerome Servolle, said that one of the truck's side panels had swung open and sliced through the school bus at window height.
“The word chaos is not strong enough. This is such a tragedy,” he said.
Photos taken at the scene show the wreckage of the bus, with windows smashed all along the left side and severe damage to the back of the vehicle.
“This is so unlikley, so unimaginable, given that the weather conditions were not a problem,” Hervé Blanché, mayor of Rochefort, told BFM TV.
“This is extremely painful.”
A local councillor who visited the scene told France Bleu radio of the “horror” he saw.
“There was a huge number of ambulances and firefighters at the scene and there were many injured,” said the councillor.
A woman working close to the scene described scenes of chaos.
“There are too many people around to see anything. People have stopped their cars to see what's going on,” she told the Local.
The bus had been travelling from the Oléron island towards Surgères.
It remains unclear if the students were wearing seat belts at the time – nor whether it would have saved their lives – though since September last year it's been a law for all school buses to be equipped with belts. The driver, however, is not responsible for making sure they're fastened.
A crisis cell has been set up and France's Education Minister Najat Vallaud Belkacem and Ecology Minister Segolene Royal are on their way to the scene of the accident.
President Francois Hollande extended his “deepest sympathies” to the friends and families of the victims, assuring them the solidarity of the nation.
The accident comes just a day after two pupils, aged 12 and 15, were killed when a bus careered off a road
in the east of the country.
The bus veered off the snow-covered road when the driver apparently lost control. There have been reports that he may have been going too fast in the conditions.
The fatal crashes come as the French government has been under increased pressure to cut road deaths after mortality rates have risen the last two years.
The government has responded with a series of measures including rolling out thousands of fake speed cameras, but road groups believe they will do little to solve the problem.
The death toll on French roads has seen a worrying surge in recent years
. The mortality rate increased for the second year in a row last year, something that hasn't happened for 35 years.
A total of 3,464 people died on French roads in 2015, a 2.4 percent increase compared to 2014.
Interior Minister Bernard Cazeneuve said last month that the surge could be put down to a 2.5 percent increase in road traffic, and “an increase in risky behaviour that can lead to serious accident fatalities”.
He also said French drivers were “too relaxed” when it came to following the road rules, and that many motorists continued to drive “at excessive speed”.