Bangladesh’s persistence was rewarded with two late wickets as South Africa went to stumps on 278-5 on the opening day of the second and final Test on Friday.
Three South African batters made half-centuries after the home team chose to bat first at St. George’s Park, but none of them went on to a big score.
Bangladesh took something from the day by removing Ryan Rickelton (42) and Temba Bavuma (67) in the space of three overs just before the close.
Bavuma was the third South African to pass 50 after captain Dean Elgar provided a solid start with his 70 and No. 3 Keegan Petersen made 64.
But Bangladesh found success through left-arm spinner Taijul Islam, who was called into the team following a 220-run loss in the series-opener.
Taijul claimed the crucial wickets of Elgar, Petersen and Rickelton for his 3-77. South Africa have the advantage as they seek to seal a series victory, but not by much.
Elgar hit 10 fours in his third half-century in three innings this series and South Africa made an imposing start by putting together four half-century stands for its first four wickets.
Bavuma and Rickelton combined for the last and best of those, a stand of 83 that looked to be taking South Africa to a position of clear dominance.
Their late dismissals gave the day a different complexion as South Africa went from 267-3 to 278-5. Rickelton was in sight of his first Test half-century in just his second Test when he tried to reverse sweep a delivery from Taijul.
He had pulled the shot off successfully earlier in his innings but this time he missed, the ball clipped the wristband of his glove and looped to Yasir Ali at slip. Bangladesh asked for a TV review after it was initially given not out and was rewarded.
Bavuma went soon after to a low catch at first slip, giving seamer Khaled Ahmed his second wicket of the day. It also meant the wait for a second Test century for Bavuma continues.
His 67 was his 19th test half-century but he is yet to add to his one and only hundred, which he made six years ago. He was out for 93 in the first test. South Africa lead the series 1-0 after their big win in Durban.
Bangladesh made two changes for the second Test, bringing back opening batsman Tamim Iqbal and giving Taijul his chance. South Africa retained the same line-up and continued without a number of its top players, who have opted out of the short series to appear in the Indian Premier League.