After a dream ODI debut last month, teenaged paceman Mustafizur Rahman announced his Test arrival by claiming three wickets in four balls as Bangladesh bowled out South Africa for 248 on the opening day of the first Test.
The tourists started well at 136 for one but could not convert the starts they got after opting to bat in the first of the two-Test series at Chittagong's Zahur Ahmed Chowdhury Stadium.
1. South Africa
4. New Zealand
7. Sri Lanka
8. West Indies
Playing only his third Test, Temba Bavuma top-scored for them with a gritty 54 before becoming the last Protea batsman to fall.
Left-arm bowler Rahman, who had claimed 5-50 in his ODI debut against India, claimed 4-37 as he and leg-spinner Jubair Hossain (3-53) tormented the top ranked Test team.
The hosts, on a high after stunning South Africa in the preceding one-day series, were seven for no loss at stumps after Tamim Iqbal (one) and Imrul Kayes (five) saw through the final two overs of the day.
Earlier, Stiaan Van Zyl (34) hit Mohammad Shahid for two boundaries in the first over to signal his positive intent but fell to an innocuous Mahmudullah delivery that was sliding down the leg.
Dean Elgar (47) and Faf Du Plessis (48) built on the 58-run opening stand to take South Africa past the 100-mark, regularly finding boundaries and rarely looking in discomfort in their 82-run partnership.
South Africa lost two wickets in three balls and were suddenly struggling to score against a team eight places below them in the Test rankings.
Hossain dismissed Simon Harmer and Dale Steyn in the same over before Rahman ended Bavuma's resistance to restrict South Africa under the 250-mark.
South Africa 248 all out (Bavuma 54, Rahman 4-37)
Bangladesh 7-0 (Kayes 5*, Philander 0-1)