Quinton de Kock hit a career-best score to steer South Africa to 421 for eight on the second morning of the fourth Test against England.
After two early wickets left the Proteas 336 for seven at Centurion, England would have fancied themselves to wrap things up for well under 400 but De Kock batted fluently throughout the first session, making 85 not out to leave the hosts firmly on top.
England offered the left-hander lives on 28 and 81, Ben Stokes putting down a tough chance in the gully and a thick edge sailing between wicketkeeper Jonny Bairstow and Alastair Cook at slip.
England had started poorly on the first morning but James Anderson and Stuart Broad hit their groove more swiftly at the second attempt.
Anderson, after 22 wicketless overs in the innings, found De Kock's edge with his eighth ball of the morning.
It raced at shoulder height towards gully, but Stokes was unable to pull off a difficult one-handed take to his right.
It was a positive sign for England, though, and the very next over saw Broad tempt Temba Bavuma outside off stump and Bairstow gather the edge.
Kagiso Rabada lasted a solitary delivery, Anderson's frustrations finally eased by a straightforward lbw decision.
The swift double strike gave England a chance to wrap the innings up but De Kock had other ideas.
He quickly shifted gears to put on a quick-fire 50 alongside Kyle Abbott, whose contribution of 16 represented another Test best.
De Kock struck a couple of hefty blows off Broad and Anderson, and registered his third Test half-century with a more delicate cut off Moeen Ali.
The spinner's second over was then dispatched for 18, both batsmen clobbering short balls for six.
Abbott was pinned clean in front of the stumps by Stokes but Dane Piedt settled into the role of supporting of De Kock.
The left-hander ticked off the 400 landmark by confidently whipping Chris Woakes from off to leg for his 11th boundary.
There was a second let off shortly before lunch, a booming drive off Woakes flying between keeper and slip as both men left it for the other.
A session of 92 runs for three wickets looked broadly even on paper, but South Africa's total already looks sizeable enough to put significant pressure on the tourists.