Cape Town: England fought back with the ball against South Africa to end day two on top in the second Test in Cape Town on Saturday.
The Proteas slipped to 40-3 in reply to England's 269 all out in the morning.
Dean Elgar (88) and Rassie van der Dussen (68) put on a fine stand of 117 as the tourists failed to take a wicket in a frustrating afternoon session.
But England took five wickets after tea to leave South Africa 215-8, trailing by 54 runs and needing to bat last on a pitch already showing signs of wear.
Stuart Broad (2-36) and James Anderson (3-34) starred once again, while Sam Curran (2-39) also picked up two vital wickets and Ben Stokes took four superb slip catches.
Opening batsman Elgar was top scorer with 88 while Van der Dussen scores 68.
Veteran opening bowlers Stuart Broad and James Anderson did the damage for England, reducing South Africa to 40 for three, both bowling with excellent control from the Wynberg end of the ground where fast bowlers of both sides have extracted bounce and some sideways movement.
Broad took two for 12 in a hostile opening spell, dismissing new opening batsman Pieter Malan and Zubayr Hamza for five apiece.
Fellow veteran Anderson claimed the wicket of South African captain Faf du Plessis for one.
Broad was warned for landing in the 'danger area' of the pitch immediately before taking his second wicket.
Van der Dussen's first scoring shot was a four edged at catchable height through a gap in the slips cordon. He was given out leg before wicket to Anderson but was reprieved on review because of an inside edge and gloved a catch to the slips off Broad only to be called back because of a no-ball.
He also survived a difficult chance to Stokes at second slip off Anderson.
England earlier added only seven runs to their overnight total of 262 for nine before Anderson was caught at slip off Kagiso Rabada, leaving Ollie Pope unbeaten on 61.
The Proteas are 1-0 up in the four-Test series.