Simon Harmer took 4-42 as Bangladesh ended day two of the first Test at Kingsmead on 98-4, still 269 runs behind the Proteas.
The 32-year-old Harmer had not played in a Test since November 2015.
He signed a Kolpak contract with English county Essex in 2017, making him ineligible to play for South Africa before the system came to an end in 2020.
Now classified as an overseas player for the county and again becoming available for his country, Harmer took 491 first-class wickets during his time away from international cricket.
Harmer made the first breakthrough in the last over before tea when he bowled Shadman Islam for nine with the third ball of his second over.
He ended a 55-run stand between Mahmudul Hasan and Najmul Hossain by bowling Najmul for 38 with a superb delivery that drifted in and spun past the bat.
This is a peach of a delivery ?
Simon Harmer has two wickets in the match.
? Stream #SAvBAN live: https://t.co/0BMWdeEYT3 pic.twitter.com/LxabvR8wcw
— SuperSport ? (@SuperSportTV) April 1, 2022
Bangladesh captain Mominul Haque fell without scoring in Harmer’s next over, caught off bat and pad by a diving Keegan Petersen at silly point.
The experienced Mushfiqur Rahim was Harmer’s fourth wicket, gloving a ball down the leg side to wicketkeeper Kyle Verreynne.
Mahmudal, playing in his third Test, survived until the close, scoring 44*.
Temba Bavuma top-scored for South Africa with 93, while fast bowler Khaled Ahmed took 4-92 for Bangladesh.
Khaled had taken only one wicket – that of Pakistan captain Babar Azam – in his previous three Test matches.
Bavuma’s long wait for a second Test century continued. He made 102* against England in Cape Town in January 2016 in his seventh Test match.
He is currently making his 50th appearance and has scored 18 half-centuries without adding another three-figure score.
Bavuma batted through a tricky period for the Proteas on Friday as Bangladesh bowled well with the second new ball on a pitch that appeared to have quickened up since the first day.
Khaled made a double strike, dismissing Verreynne and Wiaan Mulder off successive deliveries.
South Africa were 245-6, having added only 12 runs to their overnight total, but Bavuma and Keshav Maharaj added 53 runs for the seventh wicket as Bavuma moved closer to his hundred.
But Bavuma attempted a cut against off-spinner Mehidy Hasan. The ball spun back sharply and deflected off Bavuma’s pad into the stumps. He had faced 190 balls and hit 12 fours.
Heartbreak for Bavuma ?♂
He is bowled by Mehidy for 93. ??? ???? for a second Test century ????????? for Temba.
? Stream #SAvBAN live: https://t.co/0BMWdeEYT3 pic.twitter.com/WJ3990mLtc
— SuperSport ? (@SuperSportTV) April 1, 2022
Maharaj was bowled by Ebadot Hossain off the next ball but Harmer hit 38* as the last two wickets yielded 67 runs.
South Africa were eventually bowled out for 367.
HIGHLIGHTS: Proteas vs Bangladesh (1st Test, Day 2)
© Agence France-Presse