Opener Dominic Sibley struck a career-best unbeaten 85 as England seized control of the second test against South Africa at the close of the third day at Newlands on Sunday, grinding down their hosts ahead of a fourth-innings victory charge.
The tourists reached 218 for four at stumps, a lead of 264 that already looks substantial with two full days remaining, and potentially provides an excellent chance to level the four-match series.
Sibley put on 116 for the third wicket with captain Joe Root (61), before the latter steered Dwaine Pretorius to Faf du Plessis at slip late on.
Nightwatchman Dominic Bess gloved a leg-side delivery from Anrich Nortje (2-36) to end the day.
Sibley will seek to take the game further away from South Africa with Ben Stokes on day four with England's travelling fans in full voice in Cape Town.
"We've done really well – the performance with the ball yesterday and today we have showed some real grit with the bat," England seamer James Anderson told reporters.
"It is hard to say what is a good target to set. If the wicket is as flat as it was today, we would want 350 plus as a minimum.
"But if it starts to deteriorate, then we feel in the game right now. Whatever we post we will have to bowl well."
Sibley's previous best in tests was 29 and he showed impressive patience and concentration to see off the new ball and then accumulate his runs by waiting for the right opportunities to score.
He took 140 balls to reach his 50 and batted for almost the full day, which allowed Root to score more freely at the other end.
South Africa's other two wickets in England's second innings were that of Zak Crawley (25), who edged Kagiso Rabada to wicketkeeper Quinton de Kock, and Joe Denly (31), caught at long leg attempting a hook off Nortje.
It was, at times, a war of attrition that the visiting side won with risk-free, smart cricket.
Anderson took five wickets and Stokes an England record five catches as they made short work of wrapping up the South African first innings, bowling the hosts out for 223.
Anderson (5-40) knocked over Rabada (0) with the first ball of the day and completed his England record 28th test five-wicket haul when Nortje (4) edged to Stokes at slip for the all-rounder to take his fifth catch of the innings.
It is the joint most by any player in test cricket and the 12th time a fielder had taken five catches in an innings, but a first for England.
South Africa won the first test in Pretoria by 107 runs.