Zak Crawley scored his maiden Test half-century before England stuttered to 192-4 at stumps on a weather-affected day one in their bid for a series-sealing win over South Africa in Johannesburg.
Crawley (66) shared a 107-run stand with opening partner Dom Sibley (44) after Joe Root made the bold move to bat after winning the toss, despite persistent rain having wiped out the entire morning session.
South Africa were tame with the ball early on - Anrich Nortje's bouncer that struck Crawley flush on the helmet a rare moment of aggression - and visibly lacked the spark and speed of the suspended Kagiso Rabada.
But the Proteas fought back after tea with the wickets of Sibley, Crawley Joe Denly (27) and Ben Stokes (2) as England suffered a collapse of 4-50 before Root (25no) and Ollie Pope (22no) steered their side through to the close, which came about early after bad light, with an unbroken 35-run stand, during which Root notched England's 500,000th Test run.
South Africa must win the final Test to earn a series draw and avoid slipping to back-to-back home Test series defeats to England, having lost 2-1 in 2015-16 when Sir Alastair Cook was in charge of the tourists.
Cook's successor Root says winning this series would be the best achievement of his tenure with 11 England players struck down by illness during the tour and opener Rory Burns (ankle ligaments) and seamer James Anderson (broken rib) suffering series-ending injuries.
Crawley has been the beneficiary of Burns' football-inflicted injury ahead of the second Test in Cape Town and scored impressively all around the wicket as he passed fifty for the first time in his fourth Test.
Crawley and Sibley completed England's first 100-run opening stand since Cook and Keaton Jennings put on 103 against India in Chennai in December 2016 - but the partnership should have been broken on 41.
Vernon Philander - playing his 64th and final Test before joining Somerset on a Kolpak deal - had Sibley caught by the recalled Temba Bavuma at gully but overstepped as he delivered the ball as the batsman earned a reprieve on 12, having already overturned a caught-behind dismissal on 10.
Philander finally claimed a wicket after tea when Crawley ballooned a back-of-a-length ball to Rassie van der Dussen at slip, the second of two quick wickets at the start of the final session with debuting left-arm quick Beuran Hendricks having Sibley caught down the leg-side.
Pieter Malan then spilled a difficult diving one-handed chance at cover that would have removed Denly for four and the same batsman was also grassed by Dwaine Pretorius on 25 at short midwicket before his febrile innings ended when he snicked Dane Paterson to Van der Dussen slip.
Stokes then experienced a rare failure with the bat when he edged Nortje behind to Van der Dussen having just completed his 1,000th Test run against South Africa - an angry Stokes then appeared to exchange words with someone before he walked up the tunnel.
England were toying with the idea of playing their quickest seamers, Jofra Archer and Mark Wood, in tandem at Johannesburg but Archer failed a late fitness test on his right elbow as he sat out a third Test match in a row, after also missing the wins in Cape Town and Port Elizabeth.
Off-spinner Dom Bess was left out by England, despite his five-wicket haul in Port Elizabeth last week, with seamer Chris Woakes handed his first start of the series in the visitors' only change.
Watch day two of the fourth Test between South Africa and England live on Sky Sports Cricket from 7.30am on Saturday.