England were 83-7 after losing four early wickets on day five at Centurion.
South Africa are in sight of a deserved victory. Morné Morkel made the initial breakthrough when he dismissed James Taylor. Joe Root was subsequently dismissed after edging a Dane Piedt delivery to first slip.
It was Kagiso Rabada, however, who received the biggest cheer of the morning when he got Jonny Bairstow out caught behind. Rabada now has his first 10-wicket haul in Tests. At 20, he is the youngest South African to take 10 in a match.
Ben Stokes perished soon after. The left-hander tried to pull Morkel and only succeeded in getting a top edge to square leg. In 40 minutes, England had lost four wickets.
The visitors will struggle to see out the session from here.
For ball-by-ball commentary, click below:
SA 1st innings 475 – Quinton de Kock 129 not out, Stephen Cook 115, Hashim Amla 109, Ben Stokes 4-86
England 1st innings 342 – Alastair Cook 76, Joe Root 76, Moeen Ali 61, Kagiso Rabada 7-112
SA 2nd innings 248-5 declared– Hashim Amla 96, Temba Bavuma 78 not out, JP Duminy 29, James Anderson 3-47
England 2nd innings 101– James Taylor 24, Joe Root 20, Kagiso Rabada 6-32, Morné Morkel 3-36
South Africa won by 280 runs