Alastair Cook marked his final England innings with a storybook hundred before James Anderson became the joint most successful fast bowler in Test history by sparking an India collapse at the Oval on Monday.
Cook made 147 and Joe Root, his successor as England captain, 125 as the hosts piled up 423 for eight declared in their second innings of the fifth Test.
Anderson then had both Shikhar Dhawan and Cheteshwar Pujara plumb lbw as India, needing 464 for an unlikely win, slumped to one for two in reply.
That double strike meant Anderson had equalled Australia great Glenn McGrath's mark for the most Test wickets taken by any fast bowler of 563.
India captain Virat Kohli, a thorn in England's side with 593 runs this series, was then caught behind for a golden duck off Stuart Broad to leave the tourists reeling.
At stumps, India -- already 3-1 down in this five-match series -- were heading for defeat at 58 for three, despite KL Rahul's gutsy 46 not out, with no side having made more in the fourth innings to win a Test than the West Indies' 418 for seven against Australia at St John's, Antigua in 2002/03.
The day belonged to the 33-year-old Cook, who is retiring from international cricket after this match.
The Essex left-handed opener, who made 104 not out on debut against India at Nagpur in 2006, became just the fifth player to score a hundred in both their first and last Tests after Australia's Reggie Duff, Bill Ponsford and Greg Chappell and India's Mohammad Azharuddin.
England resumed on 114 for two, 154 runs ahead, with Cook 43 not out and Root unbeaten on 29.
A capacity crowd, willing Cook to score a hundred following his first-innings 71, gave him the first of several standing ovations as he walked out to bat on a sunny morning.
And he soon had another when Cook, from his second ball of the bay, turned fast bowler Jasprit Bumrah legside for four to go to fifty.
Cook later cut left-arm spinner Ravindra Jadeja for another well-struck boundary.
But Root was reprived on 46 when an edge off Jadeja was dropped by Ajinkya Rahane at slip.
It was another blow to an India side handicapped by the loss of fast bowler Ishant Sharma, who bowled just eight overs in the innings before succumbing to an ankle injury.
Cook is now fifth highest run-scorer in Test cricket
When Cook squirted a single off Mohammed Shami he moved past Sri Lanka great Kumar Sangakkara's tally of 12,400 runs and into fifth place in the list of all-time leading Test run-scorers.
Meanwhile Root drove Jadeja for six.
Cook, about to become a father for the third time, was already England's leading Test run scorer and century maker, with this match seeing him extend his national appearance record to 161 Tests.
He completed his 33rd Test century in unusual fashion when, having run a single to go to 97, a wild overthrow from Bumrah gave him four bonus runs.
Alastair Cook raises his bat after scoring 33rd Test hundred ©AFP
It was his first Test hundred since a marathon 244 against Australia at Melbourne in December.
Root, 92 not out at lunch, was dropped on 94 by first slip Pujara, perhaps distracted by diving wicket-keeper Rishabh Pant, off Shami.
A quick single saw an elated Root to his first Test hundred since he made 136 against the West Indies at Edgbaston in August 2017.
But with the England captains past and present in command while sharing a third-wicket stand of 259, they both fell in successive balls to part-time off-spinner and Test debutant Hanuma Vihari.
Root saw a slog-sweep held in the deep and, with the batsmen having crossed, Cook faced the next ball only to be caught behind by Pant edging a cut.
It was the end of a near six-and-a-half hour innings of 286 balls including 14 fours.
Once more spectators were on their feet, Cook bowing out with a record of 12,472 Test runs, including 33 hundreds, at an average of 45.35.
England's tail then hit out against a ragged and demoralised India before Root declared.
The day's play ended with Cook fielded the ball at short leg, prompting yet more cheers and another ovation as he led England off the field.