Wicketkeeper batsman Quinton de Kock fought fire with fire as his blazing innings of 95 helped South Africa edge ahead during a pulsating day of cricket in the Boxing Day Test against England.
The visitors made a dream start when the returning James Anderson took the wicket of opener Dean Elgar from the very first delivery of the Centurion Test on Thursday.
But every other South Africa batsman showed admirable application and bravery on a tough wicket to take the score to 277-9 by stumps.
Joe Root went in with an all-pace attack on a pitch where the ball seamed around even after 70 overs. While the spotlight was on Anderson – who became the first seamer to play 150 Test matches – and pacer Jofra Archer, it was left-arm seamer Sam Curran who made the biggest impact, picking up 4-57 by consistently challenging the edge of all batsmen.
With batsmen never really in on the opening day, keeper De Kock decided that attack was the best form of defence. He played and missed numerous times and the ball also found his inside and outside edge. But he made the most of his 128-ball stay, finding the boundary 14 times by not playing any half-hearted shots. He eventually fell five short of a century while trying to push at a Curran ball outside off stump.
Earlier, Anderson marked his return to the England attack at Centurion Park with the first-ball wicket of Elgar.
The ball by Anderson, 37, was a warm-up delivery down the leg side that Elgar tried to flick at but instead edged through to keeper Jos Buttler. That set the tone for a scratchy opening session.
Aiden Markram looked to be positive after recovering from a broken wrist, sustained when he hit the change room wall after being dismissed for a pair in India in October. But he somehow chipped the ball to Jonny Bairstow at midwicket for 20 off 23 balls.
Zubayr Hamza, 24, was playing just his third Test but looked good for his 39 before he was caught by Ben Stokes off Stuart Broad just as the hosts started to get some momentum going in their innings.
De Kock then looked to blast his way out of trouble, racing to 64 off just 69 balls by tea. After he fell short of a century, seamer Vernon Philander took over by remaining unbeaten on 28.
De Kock added 87 runs with 30-year-old debutant Dwaine Pretorius (33).
For England, veteran seamer Broad took 3-52 and was the most consistent bowler on Thursday. He took the scalps of Hamza, captain Faf du Plessis and Kagiso Rabada.
England's selection had been in doubt up until Thursday morning as several players had been struck down by illness. Jack Leech, Ollie Pope and Chris Woakes remained out of contention, but Archer recovered in time to play.
All-rounder Stokes elected to play as the health of his hospitalised father Ged, who fell seriously ill in Johannesburg on Monday, showed signs of improvement.