Joe Root's magnificent century steered England away from a precarious position on the second day of the third Test with South Africa in Johannesburg.
South Africa ended a first day dominated by the England bowlers on 267-7 and their tail further frustrated the tourists' attack, adding another 46 runs before being dismissed for 313.
England quickly slumped to 22-2 in reply as Alex Hales (1) and Alastair Cook (18) fell cheaply.
Nick Compton (26) and James Taylor (7) each failed to contribute meaningfully as England were reduced to 91-4, but Root (106 not out) and Ben Stokes (58) then produced an excellent counter-attack.
Stokes - fresh off his stunning double hundred in the second Test - saw his innings ended as he was caught and bowled by Morne Morkel (2-63) but by that point Root had found a rhythm.
The Yorkshireman kept his foot on the accelerator in an excellent display of timing, surging to his ninth Test ton with a picture-perfect cover drive before bad light and heavy rain stopped play at the Wanderers with England on 238-5, 75 runs behind.
England's Jonny Bairstow took the record for catches in an innings by a wicketkeeper at the Wanderers, taking his tally to six as he helped Stuart Broad (2-82) and James Anderson (1-60) claim the wickets of Chris Morris (28) and Kagiso Rabada (24).
Anderson fell foul of umpire Aleem Dar, who pulled the seamer from the attack for running onto the danger area of the pitch.
Stokes came on in Anderson's place and immediately ended South Africa's resistance, limiting the Proteas to the lowest total in Test history by a side to feature 11 double-figure scores.
Hales' stay at the crease lasted less than four overs as he paid for driving without moving his feet, edging Rabada (2-44) to second slip.
Hardus Viljoen's debut Test wicket came from his very first delivery as Alastair Cook glanced one to Dane Vilas down the leg side.
A defiant third-wicket stand of 52 between Compton and Root steadied the ship somewhat. Yet England appeared in significant trouble as Compton edged Rabada to Dean Elgar and Temba Bavuma collected a juggling catch to dismiss Taylor.
But Root and Stokes soon set about reversing the momentum in some style - the latter hitting nine boundaries and one maximum before a leading edge brought his prolific spell to a close.
Root continued undeterred, though, and reached his century with a glorious stroke.
The umpires then took the players off amid fading light, with rain leading them to abandon play for the day. Proceedings will start 30 minutes earlier at 10:00 (local time) on day three as a result.