The driver lost control and collided with barriers on a bridge near Mmamatlakala, causing the bus to go over the bridge and hit the ground, catching fire, according to a statement by the transport department.
The bus was taking Easter pilgrims from Botswana, a landlocked country in Southern Africa, to Moria, a town in Limpopo, it added.
South African President Cyril Ramaphosa sent his condolences to Botswana and pledged support to the country, his office said in a statement.
Only an 8-year-old survived the crash and was receiving medical attention at a nearby hospital, Limpopo's Department of Transport said in a separate statement.
Some bodies were burned beyond recognition while others were trapped inside the debris or scattered on the scene, the provincial department said.