Centurion: Sam Curran took four wickets for England, while Quinton de Kock played a crucial innings of 95 for South Africa on the first day of the first Test at SuperSport Park on Thursday.
South Africa were 277 for nine at the close, providing justification for captain Joe Root's decision to bowl first.
But it could have been a lot better for England - and worse for South Africa. The hosts were in deep trouble at 111 for five before De Kock counter-attacked to make a half-century off 45 balls.
De Kock played some risky strokes early in his innings but was more circumspect after his initial flurry of strokes.
Having been 64 not out off 69 balls at tea, De Kock needed 59 balls to add 31 more runs before fellow left-hander Curran had him caught behind.
Curran took four for 57 and was the best of the England bowlers, keeping a fuller length than his team-mates and slanting the ball across right-handed batsmen, with some balls swinging back in and others moving away.
Stuart Broad, recovered from illness, which prevented him from bowling in his team's two warm-up matches, took three for 52.
James Anderson, playing in his 150th Test - the first specialist bowler to reach the milestone - took a wicket with the first ball of the match when Dean Elgar nudged what looked no more than a leg side loosener to wicketkeeper Jos Buttler.
Elgar's fellow opener Aiden Markram also fell to a loose shot, clipping Curran to midwicket.
Zubayr Hamza, batting at number three in his third Test, played a promising innings of 39, which proved to be South Africa's second-highest score.
New cap Dwaine Pretorius made 33 and helped De Kock add 87 for the sixth wicket, while Vernon Philander, who finished on 28 not out, shared in a seventh wicket partnership of 47.
Ben Stokes was off the field for two extended periods after lunch and again after tea, suffering from dehydration. Stokes was in the England team despite his father, Ged, remaining in a Johannesburg hospital with a serious illness.
According to a team spokesman, there was no change to Ged Stokes' condition, which was described as "stable" on Wednesday.
Three England players were ruled out because of illness - Ollie Pope, Chris Woakes and Jack Leach. All three remained "in quarantine" at the team hotel, according to the England spokesman.