Bangladesh lasted all of 26 balls after lunch as the South African spinners wrapped up the innings on 217, helping the hosts gain a 236-run lead. Having gone into the interval on 210 for 7, Bangladesh lost their last three wickets for just seven runs with Simon Harmer picking two wickets and Keshav Maharaj taking one. South Africa, however, decided to not enforce the follow-on.
Earlier, the visitors had revived their innings for a while but Yasir Ali and Mushfiqur Rahim, who added 70 runs for the sixth wicket, fell before lunch, exposing the tail and giving the home side the opening their needed.
Bangladesh made a bright start to the day when Yasir struck Lizaad Williams’ first three balls of the day for consecutive fours. There were regular boundaries for the first nine overs in the morning before South Africa put the screws on.
Having spent more than ten overs without a four, Yasir first survived a huge lbw shout against Maharaj. South Africa burnt their last remaining review on the appeal, but a ball later, Yasir tipped the ball back to Maharaj, who took a low catch to get the home side the breakthrough.
Five minutes before the lunch break, Mushfiqur, having just reached his 21st Test fifty, went for a reverse sweep against Harmer, who was operating around the wicket to the right-hander. The ball snuck below the hurriedly played shot, clean bowling him.
Bangladesh lasted just 4.2 overs after lunch. Harmer added a second when he had Taijul Islam top-edging him to Williams at mid-off. Mehidy Hasan Miraz and Ebadot Hossain also holed out, giving Maharaj his second and Harmer his third wicket, respectively.
Bangladesh started the third day on 139 for 5 after Wiaan Mulder got into a nice groove in his first spell late on day 2. He removed Tamim Iqbal, Najmul Hossain Shanto, and Mominul Haque all lbw from around the wicket.
Duanne Olivier then took two wickets, getting Mahmudul Hasan Joy in the first over caught at first slip, and Litton Das bowled through the gate.