Firefighters say the accident happened around midnight Thursday on the outskirts of Mogi das Cruzes, a city about 60 kilometres east of Sao Paulo.
In a series of tweets, Sao Paulo firefighters say the driver lost control of the vehicle for unknown reasons and the bus veered and crashed.
Fifteen people were found dead at the scene, and another died en route to the hospital. Thirty others have been taken to local hospitals.
Daily newspaper Folha de S Paulo reports that the passengers were university students.