Dom Sibley led the way as England produced a dominant display to take a 264-run lead on day three of the second Test against South Africa.
Having failed to fire in three previous Test outings, Sibley has looked much more comfortable in Cape Town, where he will return on Monday 15 runs shy of a maiden century.
The opener rode his luck on a couple of occasions but demonstrated poise and composure in a patient 222-ball unbeaten knock, much of which was spent in a 116-run stand with captain Joe Root (61).
The host was all out for 223 and still trailing by 46 as the tail was quickly cleaned up by James Anderson at the start of Sunday's play, the veteran seamer closing with a five-for as Ben Stokes also became the first England fielder to take five catches in a Test innings.
But it was the tourist's batting that was the story of the day, England shrugging off the frailties exposed in its 107-run loss in the first Test as it built what is likely to be a match-winning advantage with six wickets still in hand.
After Anderson accounted for Kagiso Rabada, who provided Stokes' landmark catch, and Anrich Nortje, England got to work asserting its authority.
Warwickshire batsman Sibley saw Zak Crawley edge Rabada for 25 before building a 73-run partnership with Joe Denly, who fell to Nortje following a poorly executed pull shot.
Root was the next man to keep Sibley company, although the latter narrowly avoided having his off stump taken out by a superb Vernon Philander delivery that he riskily decided to leave.
Sibley punished a short and wide delivery from Rabada to bring up his half-century in the 50th over and the pairing was worth 100 runs by the time Root reached the same milestone with a boundary in the 74th.
The Proteas finally got some late reward for their toil, Dwaine Pretorius finding Root's outside edge to bring in nightwatchman Dom Bess, who was out without scoring for the second time in the match.
- Asia Cup 2023: Wellalage ‘very happy to get big wickets of Kohli, Rohit’
- VIDEO: Djokovic celebrates U.S Open triumph with Serbian basketball team
- King’s Cup 2023: Litmus test for India to find its next No. 9 with FIFA World Cup 2026 qualifiers ahead
- VIDEO: I was a little a nervous on my comeback, says KL Rahul
- Danke Seb - Sebastian Vettel bids farewell to F1 after fabled career