England took two late wickets to halt India's march after a dominant day with the bat for the hosts on the third day of the first Test in Rajkot.
Cheteshwar Pujara (126) and Murali Vijay (124) claimed a century each as India steadily fought back to within 218 runs of the visitors.
But in the final two overs of the day, Vijay and Amit Mishra were dismissed by Adil Rashid and Zafar Ansari respectively as India closed 319-4.
England had set a target of 537 after Joe Root, Moeen Ali and Ben Stokes all recorded individual centuries in their opening innings, with India resuming the on 63-0.
Stuart Broad set to work swiftly, dismissing Gautam Gambir for 29 with the first ball of the second over to claim his 100th Test wicket.
It proved a false dawn, however, with Gambir's exit paving the way for the partnership of Pujara and Vijay, who both soared past 50 before lunch, with the latter sending Zafar Ansari's deliveries wide for two sixes.
Vijay's afternoon looked as if it were to come to a premature end with a wild drive but Haseeb Hameed, making his Test debut, dropped his catch at short cover. Broad, Stokes and Chris Woakes each took turns in trying to prise apart the partnership but were made to wait for their breakthrough, keeping their patience and organisation.
The fruitful partnership of Vijay and Pujara was finally curbed somewhat between lunch and tea, claiming 66 runs during the session. England's reward for their patience finally came with the introduction of Adil Rashid who provided the googly that Vijay timidly flicked straight into Hameed. The 19-year-old was well placed again moments later to catch Mishra's inside edge off Ansari's delivery; the final ball of the day.