Left-arm spinner Simon Harmer grabbed four top-order Bangladesh wickets to put South Africa in dominance on the second day of the first Test in Durban.
Bangladesh ended day two at 98 for four wickets in their first innings with opener Mahmudul Hasan Joy unbeaten on 44, along with nightwatchman Taskin Ahmed yet to open his account.
The visitors are trailing by 269 runs with six wickets in hand after bowling the hosts out for 367 in the first innings.
After a cautious start, Bangladesh lost three quick wickets in the last session of day two.
Simon Harmer, the left-arm spinner bagged four wickets conceding 42 runs in 20 overs.
Bangladesh scored 25 in the first wicket stand. After Shadman Islam fell for 9, Mahmudul and Najmul Hossain added 55 runs on the board.
From 80 for one wicket Bangladesh suffered a mini-collapse when they lost three wickets to reach 94 runs.
Najmul scored 38, Mominul Haque suffered a duck and Mushfiuqr Rahim added 7 only.
Earlier, Khaled Ahmed took four wickets for 92 to help Bangladesh restrict South Africa to 367 runs.
Read: Pakistan level ODI series with 6-wicket win over Australia
This was also the best bowling by any Bangladeshi pacer on the soil of South Africa. He surpassed Subashis Roy’s 3/118 in 2017.
South Africa began the second day with 233 for four. They added 134 runs more in their first innings losing the remaining wickets.
Khaled bagged the first two wickets of the second day removing wicketkeeper-batter Kyle Verreynne and Wiaan Mulder. While Verreynne posted 28 off 81 balls, Mulder suffered a duck.
Temba Bavuma, however, was firm at the other end of the wicket until Mehidy Hasan removed him for 93 off 190 deliveries.
In the last two partnerships, South Africa added 69 runs that helped them pass the 350-run mark.
Simon Harmer, the all-rounder, remained unbeaten for 38 off 73 balls.
Right-arm spinner Mehidy Hasan Miraz scalped three wickets for Bangladesh while Ebadot Hossain bagged two.
Bangladesh are missing the services of Shakib Al Hasan and Tamim Iqbal in this match. While Shakib is out of the team due to family reasons, Tamim missed this Test due to illness.