Jonny Bairstow hit an undefeated 72 on Friday to keep England in contention on 208-5 at stumps on day two of the third test against South Africa at Lord's.
The 22-year-old Bairstow, who replaced star batsman Kevin Pietersen, scored his first test 50 as he moved England to within 101 runs of South Africa at Lord's with a 137-ball innings, including nine fours.
Bairstow shared a fifth-wicket stand of 124 with Ian Bell, who scored 58 with seven boundaries, after the top order had collapsed. Matt Prior was 22 not out at stumps.
Bairstow was called up after Pietersen was dropped for sending text messages to South Africa players about his teammates - reportedly criticising England captain Andrew Strauss and coach Andy Flower.
Dale Steyn was South Africa's best bowler with 2-48, while Morne Morkel claimed 2-53.
Earlier England dismissed South Africa for 309 after an hour of the morning session. Vernon Philander hit his maiden test 50, scoring 61 from 93 balls, before he was stumped by Prior off Graeme Swann.
JP Duminy, who also made 61, was the only other South African batsman to pass 50.
Steven Finn had England's best bowling figures with 4-75, while James Anderson claimed 3-76 and Swann took 2-63.
South Africa resumed on 262-7 and added just 8 runs before Stuart Broad had Dale Steyn caught by Swann at second slip for 26, to the 12th ball of the day.
The tourists had been in trouble on 54-4 and 105-5 on day one. However, the middle and lower order made partnerships of 51, 58, 72, 35 and 37 to steer the Proteas past the 300 mark that Duminy said they would be happy with on Thursday night.
Morkel, who made a useful 25, proved a capable partner for Philander, who reached his half century from 75 balls.
The stand was beginning to irritate England when Morkel flashed at a wide delivery from Finn and Prior pulled off a brilliant diving catch.
South Africa was all out four balls later when Philander charged down the wicket to Swann and played an air shot, allowing Prior to whip off the bails for his sixth dismissal of the innings.
In reply, England seemed to have survived a difficult spell before lunch when Strauss - playing in his 100th test - was bowled by the final ball of the session for 20, a teasing inswinger from Morkel that nipped between bat and pad.
Trott made just 8 before he was lbw to Steyn on referral in the 14th over and eight balls later Cook was out to the same bowler, inexplicably trying to drive at a wide delivery that he slashed to Kallis at second slip.
Taylor hung around for 24 balls before he edged Morkel to Graeme Smith at first slip for 10, leaving England in trouble on 54-4.
Yet South Africa had been on an identical score in its first innings and England began a similar revival.
Bell was on 14 when he survived a referral for lbw from Imran Tahir and with Bairstow he batted through 61 minutes to tea.
Bairstow reached his 50 with a slightly fortunate boundary through the slip cordon off Morkel and four balls later he nudged Morkel for three to bring up the first century stand of the match.
Bell passed 50 when he stylishly cut Kallis for four but he was out in the 62nd over, caught at fourth slip by Alviro Petersen off Philander.
Matt Prior survived a difficult final over from Steyn.
South Africa leads the series 1-0 and will replace England at the top of the ICC world rankings if it avoids defeat.
Can the Black Caps win the test series in England?