South Africa wrapped up the second Test against Bangladesh inside three days by hammering their hosts by an innings and 273 runs in Chattogram.
The victory made it a 2-0 clean sweep in the series for the tourists, who had started the third day in a great spot having left Bangladesh 38-4 in their first innings at stumps on Wednesday.
The Proteas tore through the Bangladesh middle order before bowling them all out for 159 in their first innings.
Seamer Kagiso Rabada, on the way to a five-for, got the ball rolling with the dismissal of captain Najmul Hossain Shanto (nine) before Mushfiqur Rahim was caught by Tony de Zorzi off Dane Paterson for a duck.
Wickets continued to fall in quick succession, with Mehidy Hasan Miraz (one) and Mahidul Islam Ankon (zero) both dismissed by Rabada to leave Bangladesh 48-8. Despite a late rally, they were all out for 159 and South Africa enforced the follow-on to good effect.
Bangladesh made another poor start to their innings, losing Mahmudul Hasan Joy (11), Shadman Islam (six), Zakir Hasan (seven) and Mominul Haque (zero) for just 43 runs, as Keshav Maharaj (5-59) and Senuran Muthusamy leading South Africa's charge to victory.
Data Debrief: Bangladesh's dismal home form rolls on
This defeat was Bangladesh's fifth Test loss in a row at home, which equals their worst run since October 2011 and November 2012.
But the third day of this test was all about South Africa's bowlers, who took 16 wickets in total.
Rabada was first to take a five-for in the first innings, but was later joined by Maharaj. Senuran Muthasamy, meanwhile, took career-best figures of 4-45 in the second innings.