Stephen Cook scored a maiden ton to help South Africa dominate day one of the fourth and final Test against England in Centurion.
England have already won the series with an unassailable 2-0 lead, but they are currently on the backfoot as the Proteas reached stumps on 329-5.
It was not the ideal day for James Anderson as he failed to take a single wicket, ending the day's play with figures of 0-70, but Stuart Broad, Chris Woakes, Ben Stokes and Moeen Ali struck.
South Africa suffered a blow in the 11th over when Dean Elgar (20) was caught out by James Taylor off Ali's delivery, but the hosts did not wobble as Hashim Amla and Cook guided the attack.
England rued Jonny Bairstow's dropped catch on Amla as the batsman went on to pull up a Test century, but Stokes eventually bowled out the 32-year-old, who hit 109 runs off 169 balls, in the evening session.
Amla was one of four wickets to fall in the evening session, but prior to then, South Africa were in complete control as they headed into lunch on 107-1.
In the afternoon session, Bairstow made another fumble by dropping Cook on 47, and the batsman went from strength to strength as he kept things ticking until tea.
Cook and Amla resumed on 224-1 for the final session of the day, and the former managed to claim his first Test century off 187 balls.
Once Amla fell to Stokes, the momentum began to swing in England's direction as AB de Villiers was taken out by Broad for a duck in the following over.
Cook was eventually dismantled when Woakes bowled him out for 115 off 218 balls, and Jean-Paul Duminy did not last long at the crease as Ali trapped him lbw on 16 off 31.
Temba Bavuma and Quinton de Kock will resume with the bat tomorrow unbeaten on 32 and 25 runs respectively.