Steven Finn and Ben Stokes claimed two wickets apiece as England reduced South Africa to 267 for 7 at stumps on day one of the third cricket test in Johannesburg.
England, 1-0 up in the four-test series, had the hosts in trouble before being held up by a valuable unbeaten eighth-wicket stand of 42 between Chris Morris (26) and Kagiso Rabada (20).
New South Africa captain AB de Villiers won the toss and chose to bat despite overcast conditions that offered hope for England's seam attack.
His decision appeared to be vindicated as the hosts held off the early threat and reached 73 for one at lunch, losing opener Stiaan van Zyl (21) when he top edged Stokes to give wicketkeeper Jonny Bairstow one of four catches.
But England struck twice in quick succession in the second session to dismiss Hashim Amla and Dean Elgar as they approached half centuries to put a brake on the home side.
Amla fell to a vicious in-swinging delivery from Finn, caught behind for 40 not long after Elgar (46) got a thin edge to Bairstow off the spin of Moeen Ali.
An attacking innings from De Villiers ended shortly after tea as he went for 36 off 40 balls, followed by Faf du Plessis who holed out to deep square leg off Finn with a rash shot.
De Villiers, replacing Amla as captain and promising a more aggressive approach, gloved a ball from Stokes down the leg side to be caught behind just when he looked capable of producing another big score on a ground where he has had past success.
Wicketkeeper Dane Vilas, who made a last-minute dash from the coastal city of Port Elizabeth to play after being called up as a replacement for the injured Quinton de Kock, struck some lusty boundaries before pulling the ball to deep backward square.
Moeen caught the high ball to give Stuart Broad his first wicket of the day as Vilas perished for 26.
The 30-year-old keeper was given a police escort to speed his journey to the ground after De Kock sustained a freak injury to his right knee yesterday.
"Quinton slipped and sprained his right knee at home late yesterday," South Africa manager Mohammed Moosajee said.