The Proteas wrapped up the Bangladesh tail quickly after lunch as they extended their lead on the third day of the second Test at St George's Park on Sunday.
South Africa are 84/2 at tea at an overcast Gqeberha with a lead of 320 runs.
After lunch and needing 43 to avoid the follow on, the Proteas had no trouble picking up the final three Bangladeshi wickets.
The tourists only added seven runs before being bundled out for 217 thanks to spin twins Keshav Maharaj (2/57) and Simon Harmer.
Taijul Islam was caught off Harmer at mid-off for 5, while Mehidy Hasan Miraz tried to slog-swept Maharaj only to be caught in the deep for 11.
Harmer went on to take his third and the final wicket of the innings as Ebadot Hossain was caught at mid-wicket for a duck as the visitors innings came to an end.
Wiaan Mulder remained the most economical bowler as he took three for 25, while Simon Harmer returned with figures of three for 39.
Dean Elgar chose not to enforce the follow on and looked to extend South Africa's lead, which was already 236 runs.
Elgar and Sare Erwee took their positions in the middle and a mini-scare occurred for Bangladesh in the first over.
Mehidy was struck hard in the ribs by Erwee, who cut the ball hard at the all-rounder. Mehidy didn't seem to pick up the flight of the ball which hit in the chest.
Mehidy was eventually taken off by a stretcher to receive treatment. Thankfully for Bangladesh, he returned an over later and was soon introduced to the attack.
A 60-run opening stand between Elgar and Erwee formed as they took the attack to the bowlers. Bangladesh eventually got the breakthrough as Elgar tried to reverse sweep Taijul Islam, who took six wickets in the first innings, and was bowled for 26 off 29 balls.
A 24-run partnership between Keegan Petersen and Erwee followed before Petersen was trapped LBW by Islam for 14 off 25 balls.
Tea was called after Petersen's wicket with Erwee unbeaten on 40 as the Proteas look to extend their lead over the 400-mark.
Scores in brief:
South Africa 453 all out in 136.1 overs (Maharaj 84, Elgar 70, Taijul Islam 6/135) and 84/2 in 19.4 overs (Erwee 40*, Islam 1/25)
Bangladesh 210/7 in 70 overs (Rahim 51, Iqbal 47, Mulder 3/25, Harmer 3/39)
South Africa lead by 312 runs.