Zak Crawley and Dom Sibley became the first England openers to post a century stand in over three years but South Africa fought back to leave the fourth Test in the balance after a shortened day one in Johannesburg.
The entire morning session at the Wanderers was wiped out by weather but when play was finally able to get going three hours and 20 minutes later, Crawley (66) and Sibley (44) set to work on a fine first-wicket partnership worth 107.
The last time England’s top two put on three figures was back in 2016, when Sir Alastair Cook and Keaton Jennings added 103 in Chennai, and while that should have been the cornerstone of a sizeable total, South Africa had other ideas.
They took four wickets for 50 in a spell of challenging pace bowling, leaving Joe Root and Ollie Pope to prevent further damage by the time bad light brought an early finish at 192 for four.
England’s hopes of converting their 2-1 lead into a series win suffered an early setback during the warm-ups, with Jofra Archer’s mooted return ending in disappointment,
After being ruled out of the last two matches he had dialled up his intensity in the nets over the previous 48 hours, turning in two hostile spells that made a compelling case for selection. Things took a turn for the worse shortly before the toss, as Archer aborted his pre-match preparations after feeling soreness in his joint.
There were conversations with the team doctor, Root and head coach Chris Silverwood and finally the telling sight of consoling pats on the back from team-mates. To his own visible frustration, Archer was now risk that could not taken. Instead Chris Woakes replaced spinner Dom Bess in the only change.
Everything else broke in England’s favour before the tea break, which saw them close on exactly 100 without loss. Root had chosen to bat first after calling correctly to extend Faf Du Plessis’ losing streak to seven in a row.
In Kagiso Rabada’s absence it fell to Vernon Philander, making final appearance before retirement, to set the tone but he was bested early as a pair of glorious drives disappeared through mid-off and cover off Crawley’s bat.
Anrich Nortje’s initial blast was no more successful, with Crawley helping himself to 11 off the paceman’s opening over.
Things were not quite as straightforward for Sibley, who correctly overturned an early caught-behind decision and was then caught in the gully off Philander on 12. South Africa’s celebrations had barely started when umpire Joel Wilson’s outstretched arm halted them, Philander penalised for a front-foot no-ball.
While Sibley refocused, Crawley continued his charge with three boundaries in an over from Dwaine Pretorius. That took him to 49 and, after taking a single off his 80th delivery, the 21-year-old raised his bat for the first time at this level.
By now he was confident enough to take on a 92mph Nortje bouncer, but earned a nasty blow to the helmet for his trouble. He continued after concussion testing, albeit with a visible mark, and was there to see Sibley work the last ball of the session off his hips to bring up the team hundred.
The first building blocks of a big first-innings score were in position but South Africa rallied in the evening with four wickets for 50.
Sibley was first to go, debutant Beuran Hendricks generating some extra bounce and picking up an edge down the leg-side. Having seen his partner fall, Crawley was close behind as Philander got it swinging with the first ball of his third spell.
Crawley attempted to withdraw the bat late but saw a chunky edge zip through to Rassie Van Der Dussen. He also caught Joe Denly, whose skittish 27 had already profited from two drops, and then held the big wicket of Stokes.
The top run-scorer in the series was gone for just two this time, swinging hard but imprecisely at Nortje to pick out second slip.
As he walked off towards the tunnel Stokes appeared to react furiously to comments from a fan in the stand, with an audible obscenity likely to land him in hot water with the match referee.
Root and Pope, who reached 25no and 22no respectively, were tested hard by some fierce deliveries on a pitch that was belatedly waking up and flying through but held on for stumps.
Nagging uncertainty over Stokes’ recent quad injury means England will not know how to balance their side until the eleventh hour.
Paul Stirling and Andrew Balbirnie both hit centuries in the shock victory.
Stuart Broad took his 500th Test wicket last month.
Derbyshire chased down 365 for victory.
David Willey added a rapid half-century at the end of the innings.
The all-rounder is recovering from a quad injury which has impacted his bowling workload.
It is not yet known how much of a role the all-rounder can be expected to play with the ball.
Babar is top of the Twenty20 rankings, third in the the one-day equivalent and sixth among Test players.
Australia fast bowler Mitchell Starc says that the white-ball squad are preparing for the proposed tour of England as if it will go ahead.