England were 167 for three at tea after winning the toss and making first use of a pitch with good bounce but minimal sideways movement.
Alex Hales, playing in his second Test match, hit 60 -- his maiden Test half-century -- and shared stands of 55 with opening partner Alastair Cook and 74 for the second wicket with Nick Compton.
Compton was out for 45 in the last over before tea when he pulled a ball from Kagiso Rabada and was well caught by a diving Temba Bavuma at midwicket.
He earlier made the first breakthrough with the help of a superb catch by debutant Chris Morris.
More From This Section
Cook made 27 before edging Rabada low to third slip where Morris dived far to his left and held the ball centimetres above the ground.
Hales reached his half-century off 96 balls but his innings lost momentum before he edged Morne Morkel to AB de Villiers at second slip after facing a total of 140 balls. He hit ten fours.
Joe Root made a shaky start, being dropped by Morris, flinging himself to his left from gully off Morkel when he had 13 and fending a good bouncer from Rabada into the air but short of second slip when he was on 23, his score at tea.
Rabada and off-spinner Dane Piedt were both playing in their fourth Test match, leaving Morkel, in his 69th Test, as the only experienced member of the South African bowling attack.
Both Rabada and Morris built up good pace, with Rabada clocked at 150kmh shortly before dismissing Cook.
In a third change for South Africa, Quinton de Kock replaced out-of-form batsman JP Duminy. De Kock kept wicket, with AB de Villiers playing as a specialist batsman.