Dom Bess took four wickets as England survived Rishabh Pant's counter-attack to end day three of the first Test in Chennai 321 runs ahead of India in an entertaining contest.
England were bowled out for 578 and India, after initially toiling, closed 257-6 thanks to a sparkling knock from Pant at M. A. Chidambaram Stadium.
Bess snared home skipper Virat Kohli for 11 and vice-captain Ajinkya Rahane for one, before putting an end to Pant and Cheteshwar Pujara's rearguard, leaving England in a strong position to take the lead in the four-Test series.
The tourists added a further 23 runs for their final two wickets in the opening hour of Sunday's session, with Bess (34) falling lbw to Jasprit Bumrah and James Anderson missing a sweep against Ravichandran Ashwin for a single run.
India's task of chasing down England's tally was made all the more difficult when reduced to 154-4 at tea, including the loss of Kohli for just 11 when caught at short-leg by the bowling of Bess.
Kohli's dismissal came after Rohit Sharma was sent packing by Jofra Archer for six and Shubman Gill (29) was undone by Anderson's diving catch after averaging a run-a-ball up to that point.
Bess rammed home England's advantage by taking Rahane, who went to a superb Joe Root catch after chipping a drive to short cover, but India - 73-4 at that point - finally steadied the ship through Pujara and Pant.
Pujara racked up 11 fours from 143 balls en route to 73, though it was Pant who helped make a more telling dent in England's tally with nine fours and five sixes as he targeted the spin of Jack Leach.
However, Bess returned and took both Pujara and Pant, the latter being caught at deep extra by Leach for 91 from 88 balls.
Ashwin and Washington Sundar frustrated England late in the day, ending the session on eight and 33 not out respectively.
India given hope by Pant
The hosts were 73-4 when Pant, who also starred in his side's recent win over Australia, came to the crease.
Hopes were dwindling at that point but the 23-year-old opted to attack and took advantage of Leach's bowling.
But a first Test century eluded Pant as he skewed a big shot and was caught by Leach, who was the most relieved man on the field at that point.
Bess to the rescue
Having already taken the wickets of Kohli and Rahane in the space of six deliveries, Bess took over from Leach to ensure the damage inflicted by Pujara and Pant in particular was not too great.
The Indian duo brought up their half-centuries in the same over off Leach, but their stand was broken by the impressive Bess, who ended the day with figures of 4-55.