Ben Stokes and Ollie Pope both scored centuries as a dominant England took a firm grip on the third test against South Africa, declaring on 499 before reducing the hosts to 60 runs for two wickets at the close of the second day on Friday.
South Africa trail by 439 runs and will need to bat for much of the weekend to stay in the contest and avoid going 2-1 behind in the four-test series.
Dean Elgar, 32 not out, and nightwatchman Anrich Nortje will return on Saturday, chasing down England's first-innings score of 499 for nine declared, after spinner, Dom Bess removed opener Pieter Malan (18) and Zubayr Hamza for 10 in fading light and left South Africa in a perilous position.
An unbeaten 135 from 22-year-old Ollie Pope, his maiden test ton, and 120 from Ben Stokes helped England achieve the fourth-highest test innings score at Port Elizabeth, the oldest test venue in South Africa.
Pope displayed his potential as he came in at 39 not out overnight, sped to his 50, survived two scares before getting to 100 and then put the South African bowlers to the sword.
He and Stokes put on 203 for the fifth wicket, while Pope also featured in a 59-run stand with Sam Curran and then a 73-run partnership for the ninth wicket in just 52 balls with tail-ender Mark Wood.
Just two days after being named the world's best cricketer, Stokes underlined his talismanic role for England with a typically flourishing century, before being caught off the bowling of debutant Dane Paterson.
In the process, Stokes passed 4,000 runs to become only the seventh test cricketer to reach that figure and take 100 wickets, achieving the milestone in fewer tests than England great Ian Botham.
England piled misery onto their hosts as 21-year-old Curran bashed his way to 44 off only 50 balls and number 10 batsman Wood hit five sixes in a taunting 42 off just 23 balls.
Keshav Maharaj took 5-180 in a marathon 58 overs after South Africa began the day with the demoralising news that top bowler Kagiso Rabada would be suspended for the last test of the series.
Rabada was given another demerit point by the International Cricket Council for robustly celebrating the wicket of England captain Joe Root on Thursday.
The bowler, who has accumulated four demerit points in a 24-month period, cannot play in the fourth test in Johannesburg, which starts on Jan. 24.