The tourists fought back by taking three wickets, including both overnight batsmen and all-rounder Dwaine Pretorius.
Centurion: Rassie van der Dussen and Anrich Nortje shared the biggest partnership of the match as South Africa moved 300 ahead of England at lunch on the third day of the first Test on Saturday.
South Africa were 197 for seven at SuperSport Park, with new cap Van der Dussen (51) and nightwatchman Nortje (40) putting on 91 for the fifth wicket before being parted half an hour before lunch as England endured a frustrating morning.
The tourists fought back by taking three wickets, including both overnight batsmen and all-rounder Dwaine Pretorius. Two of the wickets fell to fast bowler Jofra Archer, who had figures of four for 83 at lunch.
First innings top-scorer Quinton de Kock added to England's frustrations, however, by scoring 30 not out off 17 balls. Three of his first four scoring shots were sixes, hooked off Archer despite fielders being placed on the boundary at long leg and fine leg.
England captain Joe Root was off the field for about 40 minutes on either side of the morning drinks break because of illness, and he left again shortly before lunch.
Nortje was given out caught behind off Sam Curran early in the day when his score was on eight but escaped when a review showed the ball had deflected off his shoulder on the way to Jonny Bairstow, who was keeping wicket in place of an ill Jos Buttler.
Nortje had to survive several short-pitched deliveries, including one from Broad which hit him in the ribs and left him needing treatment on the field.
Van der Dussen played a solid innings although he could have been run out twice before Archer eventually got him leg before wicket after facing 67 balls and hitting five fours.
Nortje followed in Archer's next over, caught at short leg by substitute fielder Zak Crawley, after batting for 127 minutes and facing 89 balls.