At least 10 people were injured, some of them seriously.
The coach was taking about 50 people, including children, back to Naples following a pilgrimage.
The cause of the accident is not yet known. Some reports say the vehicle was travelling at speed.
The head of the local fire brigade division, Alessio Barbarulo, said barriers on bridges would normally prevent such accidents but “evidently it seems the impact was so strong that even the barrier gave way”.
A survivor said the driver, who was among the dead, appeared to have lost control of the bus, possibly after a tyre punctured.
Transport Minister Maurizio Lupi said the vehicle had passed its annual inspection in March, and there was no indication of technical problems.
Tests are being carried out on the driver’s body as part of the investigation into what caused the accident.
TV footage showed smashed vehicles on the flyover and shrouded bodies lined up by the side of a road.
The Naples-Bari motorway was closed to traffic because of the accident.
The bus dropped 30m (98ft), coming to rest in heavy undergrowth after smashing through the guard-rail.
The final number of victims remains unclear, with local officials saying 38 died while the transport ministry in Rome spoke of 39.
The injured were taken to hospitals in Avellino, Salerno and Nola, Ansa news agency said.
They include the occupants the six cars caught up in the collision. Six of those hurt are children.
Those on board had been visiting the town of Telese Terme, known for its hot springs, and the nearby birthplace of Padre Pio, one of Italy’s most popular saints.
On a visit to Greece, Italian Prime Minister Enrico Letta said the accident was “a huge tragedy”.
Exactly 10 years ago, another accident on the same stretch of motorway claimed six lives and injured 11 other people.
Crane removes coach wreckage.