Jonathan Bairstow rewarded England's decision to recall him in place of Kevin Pietersen with a maiden Test fifty as they fought back on the second day of their series finale with South Africa at Lord's.
Bairstow came in Friday when England, just as the tourists had done in their first innings, had collapsed to 54 for four.
But by stumps England were 208 for five.
Bairstow was 72 not out, having added 124 for the fifth wicket with Ian Bell (58). Matt Prior was unbeaten on 22.
However, that left England still 101 runs adrift of South Africa's 309, with the Proteas, 1-0 up in the three-match series, only needing to avoid defeat to replace their hosts as the world's top-ranked Test side.
Bairstow, dropped by England after making a mere 38 runs during his first three Tests against the West Indies earlier this season, was under severe pressure - especially following Pietersen's 149 in the drawn second Test at Headingley.
Despite that brilliant innings, England axed the South Africa-born Pietersen after he sent "provocative" texts, believed to be critical of his team-mates, to Proteas players.
S Africa first innings (o'night: 262-7)
G Smith c Prior b Anderson 14
A Petersen c Prior b Finn 22
H Amla b Finn 13
J Kallis c Prior b Finn 3
AB de Villiers c Cook b Anderson 27
J Rudolph b Swann 42
JP Duminy c Prior b Anderson 61
V Philander st Prior b Swann 61
D Steyn c Swann b Broad 26
M Morkel c Prior b Finn 25
Imran Tahir not out 2
Total (all out, 101.2 overs, 443 mins) 309
Fall of wickets: 1-22 (Smith) 2-49 (Petersen), 3-50 (Amla), 4-54 (Kallis),
5-105 (De Villiers), 6-163 (Rudolph), 7-235 (Duminy), 8-270 (Steyn), 9-307
(Morkel), 10-309 (Philander)
England first innings
A Strauss b Morkel 20
A Cook c Kallis b Steyn 7
J Trott lbw b Steyn 8
I Bell c Petersen b Philander 58
J Taylor c Smith b Morkel 10
J Bairstow not out 72
M Prior not out 22
Total (5 wkts, 72 overs, 320 mins) 208
Fall of wickets: 1-29 (Strauss), 2-38 (Trott), 3-39 (Cook), 4-54 (Taylor),
When the 22-year-old Bairstow walked out, Dale Steyn had taken two wickets for one run in four balls and fellow fast bowler Morne Morkel two for three in 11.
Morkel struck first when, off the last ball before lunch, he bowled England captain Andrew Strauss, playing his 100th Test and 50th as skipper on his Middlesex home ground, between bat and pad with a well-directed delivery from around the wicket.
Steyn then removed Jonathan Trott, lbw on review, and Alastair Cook, well caught by Jacques Kallis at second slip, for single figure scores.
Bairstow struggled with the short ball against the West Indies and South Africa posted a short leg as they tried to work the Yorkshireman over.
But despite taking 13 balls to get off the mark and looking decidedly uncomfortable, Bairstow eventually pulled the tall Morkel for four before Bell, with typical elegance, drove Steyn to the boundary.
Both batsmen got away with some streaky edges but there was no doubt about Bairstow's on-driven four off leg-spinner Imran Tahir.
A fortunate steer through the slips off Morkel saw Bairstow, who last week made a hundred for the second-string England Lions against Australia A, to fifty off 86 balls including eight fours.
Conditions, with blue skies above and a still good pitch, were now ideal for batting and it was not long before Bell followed Bairstow to fifty by steering seamer Kallis behind point for a sixth four in 133 balls.
But all-rounder Vernon Philander, whose maiden Test fifty had earlier helped the Proteas past the benchmark total of 300, broke the fifth-wicket partnership when he had Bell caught by third slip Alviro Petersen off a good length ball that took the edge.
Steyn, Morkel and Kallis all then beat the bat but no more wickets fell Friday.
South Africa resumed on 262 for seven, with Philander 46 not out.
He went on to make 61, joint top score in the innings, as South Africa recovered from the shock of seeing Middlesex fast bowler Steven Finn, who finished with four for 75, rip through their star-studded top order.
Philander shared several useful lower order partnerships before his more than three hours of resistance ended when he was last man out, stumped trying to slog off-spinner Graeme Swann.