Jos Buttler celebrated his 28th birthday with an innings of 89 that left England on top in the fifth Test against India at the Oval on Saturday.
England, who had already won this five-match series at 3-1 up, started the second day in danger of being dismissed for under 200 at 198 for seven.
Yet when Buttler was last man out they had made a total of 332.
At stumps, India were struggling at 174 for six - a deficit of 158 runs -- with captain and star batsman Virat Kohli falling to Ben Stokes for 49.
Test debutant Hanuma Vihari was 25 not out and Ravindra Jadeja unbeaten on eight.
England spearhead James Anderson's figures of two for 20 in 11 overs left him just two shy of Australia great Glenn McGrath's record of 563 Test wickets.
Buttler and Stuart Broad (38) frustrated India with a ninth-wicket stand of 98 as, yet again this series, England bounced back with the bat after a top-order collapse.
This was the fourth time in five innings that Buttler, recalled to Test duty earlier this season by new national selector Ed Smith, had been England's top scorer.
Alastair Cook, in his final Test appearance before international retirement, made 71 on Friday.
But his dismissal sparked a slump that saw England lose six wickets for 48 runs.
Buttler, who had been given out lbw to Mohammed Shami on eight on Friday only for a review to reveal an inside edge, was 11 not out overnight, with Adil Rashid unbeaten on four.
Rashid was soon lbw for 15 to fast bowler Jasprit Bumrah on an overcast morning.
Broad was then peppered with several short-pitched deliveries but hung in to play some good shots before Buttler went to fifty in 84 balls, with England scoring 106 runs in the morning session.
Broad eventually fell when a skyed drive off left-arm spinner Jadeja was well caught over his shoulder by a diving KL Rahul, running back from mid-on.
Buttler, now with only last man Anderson for company, hit two sixes in three balls off Bumrah.
But looking for a single to keep the strike, he fell short of what would have been his second Test hundred when he guided Jadeja to Ajinkya Rahane at slip.
SCORES IN BRIEF
England: First Innings 332 (Cook 71, Ali 50, Buttler 89, Broad 38; Bumrah 3-83, Ishant 3-62, Jadeja 4-79)
India: First Innings 53 for 1 (Rahul 37, Pujara 37, Kohli 49, Vihari 25 not out; Anderson 2-20, Stokes 2-44)