The Proteas made the England bowlers toil hard on day three of the second Test setting England 474 runs to win after posting 343/9 declared.
The pair of Dean Elgar and Hashim Amla began the day for the Proteas and gave them a solid platform adding 78 runs to the overnight total.
Elgar (80) and Amla put on their first ever 100 run stand in 27 innings together before the former spliced a short ball from Ben Stokes to deep backward square leg.
Quinton de Kock (1) fell cheaply with James Anderson extracting the edge to get the dangerous left-hander.
Faf du Plessis joined Amla and put on 52 with the bearded one to take the game away from England with the lead stretching over the 300 mark.
Amla (87) was thirteen runs short of his century when he was trapped leg before by Liam Dawson, he nearly earned a lucky reprieve when umpire Paul Reiffel gave him not out but replays showed it was hitting middle and met all other criteria and he had to go on review.
A handy stand between skipper Du Plessis and Temba Bavuma (15) ended when the latter looked to go after Moeen Ali and skied one.
The skipper made 63 before being hit in front by Stokes, he reviewed but this time the decision stood.
At 275 for 6 with a lead of 405 South Africa still wanted to grind a few more runs out of England.
Vernon Philander played another important knock hitting 42 to help South Africa get to 343 with the help of Chris Morris (13), Keshav Maharaj (1) and Morne Morkel (17*).
Then having hit Ali for two sixes Philander toed one straight back to the spinner who ended with figures of 4/78 to be the pick of the bowlers.
With that dismissal came the declaration, leaving England needing 474 runs to win.
In the four overs bowled before the close of play both Alastair Cook (0*) and Keaton Jennings (0*) left their shots in the shed.
The question will be if England attack tomorrow and go for the win or do they look to be defensive given the number of overs they will have to reach the total.