Cape Town - The second session at Newlands on Monday saw AB de Villiers depart for 88 after sharing a 183-run third wicket partnership with Hashim Amla.
At tea, the Proteas were on 290/3 with Amla 132* and Faf du Plessis 15*. They still trail by 339.
Amla got to his century in the first over after lunch, with a beautiful backward cut of Moeen Ali.
It was his first 100 since December 2014, but the subdued celebration that followed told its own story - the job was far from done.
England continued to ask questions, but De Villiers and Amla were not giving much away.
When the visitors took the second new ball, South Africa were 230/2, and James Anderson initially caused a bit of trouble for Amla in particular.
England were toiling, but then they almost had both De Villiers and Amla back in the hut within the space of an over.
First, in the 89th over, Ben Stokes thought he had De Villiers when he crashed one into the pads before umpire Aleem Dar raised his finger.
De Villiers immediately reviewed, waving his bat in the air, and Ultra Edge revealed a thin inside edge.
Dar reversed his decision, and De Villiers was safe.
Then, in the very next over, Steven Finn saw Amla - on 120 at the time - slash a cut towards backward point.
Nick Compton was the fielder, but the third dropped catch of the innings gave Amla yet another life.
England didn't have to wait long for their breakthrough, though.
In the 94th over Finn dragged one short to De Villiers, who obliged, but his well-timed pull shot was taken by Anderson at short mid-wicket.
It was obviously a big loss for the home side.
With their superstar gone, the out-of-form Faf du Plessis walked to the wicket.
England had their tails up, but Du Plessis got through to tea without too much drama.