Debutant Haseeb Hameed struck his maiden fifty and shared an unbroken century partnership with captain Alastair Cook to push England's lead over India to 163 runs on day four of the first test in Rajkot.
The 19-year-old Hameed was unbeaten on 62 at the close with Cook on 46 as England reached 114 without loss, virtually ruling out the prospect of an India win on the final day.
Leg-spinner Adil Rashid earlier picked up four wickets to help the touring side dismiss India for 488 and take a first- innings lead of 49 runs.
India's Ravichandran Ashwin made 70 to deny England a bigger advantage.
Right-hander Hameed, the youngest opener to play a test for England, was assured in his footwork against the spinners and handled the reverse swing from the fast bowlers without much trouble.
Hameed, whose parents originate from India, reached his half-century with a delicate late cut for four off leg-spinner Amit Mishra. He hit five fours and a six.
England, who made 537 in their first innings, earlier picked up the wickets of India captain Virat Kohli and Ajinkya Rahane in the first session and looked on course for a sizeable lead.
All-rounder Ashwin and wicketkeeper Wriddhiman Saha (35) added 64 for the seventh wicket to reduce the deficit.
Resuming on 319-4, Kohli and Rahane appeared untroubled, picking up singles and twos as well as occasional boundaries.
Rahane missed a straight delivery playing across the line to left-arm spinner Zafar Ansari and was bowled for 13, ending their 30-run partnership.
Kohli, India's best batsman, looked in fine touch and struck crisp boundaries in his 40 before the right-hander was out hit wicket, his back leg brushing the stumps as he tried to pull a Rashid delivery.
Kohli stood in disbelief before trudging off with his team on 361 for six.
Saha survived nervous moments at the start of his innings and saw an edge off Ben Stokes go between wicketkeeper Jonny Bairstow and Cook at slip.
He was also hit on the grill of his helmet by fast bowler Chris Woakes before getting an edge to Bairstow off Moeen Ali.
Rashid took the wickets of local boy Ravindra Jadeja and Umesh Yadav to take his innings tally to four.
England captain Cook dropped number 11 batsman Mohammed Shami at slip off Stuart Broad and India adding another 29 runs for the final wicket.
Ashwin, who hit seven boundaries, was the last man out when he holed out at deep midwicket, giving off-spinner Moeen his second wicket of the innings.