Spinner Ravichandran Ashwin took five wickets as India bowled England out for 145 on the third day of the fourth Test in Ranchi on Sunday, the hosts needing 192 to clinch the series.
Opener Zak Crawley top-scored with 60 but the rest of the England batting faltered against India's spin, with Ashwin returning figures of 5-51 and Kuldeep Yadav 4-22.
England won the opening Test but India lead the five-match series 2-1.
Earlier, Zak Crawley hit a half-century as England extended their lead to 166 at tea, after spinner Shoaib Bashir's five wickets helped bowl out India for 307 on Sunday's day three of the fourth Test.
Wicketkeeper Dhruv Jurel's 90 in the morning session restricted England's lead to 46, and then the spinners, led by Ravichandran Ashwin, took five wickets before in Ranchi.
England were 120-5 at the break after losing Crawley on 60 and first-innings centurion Joe Root lbw to Ashwin for 11.
Jonny Bairstow, on 30, and Ben Foakes, who is yet to score, were batting as England try to level the five-match series and send it to a fifth-Test decider in Dharamsala.
Ashwin took the new ball on a pitch with cracks and variable bounce and struck in consecutive balls to remove Ben Duckett, caught at short leg for 15, and Ollie Pope, lbw without scoring, as England were reduced 19-2.
Root, who scored an unbeaten 122 in the first innings, put on 46 with Crawley before Ashwin and India reviewed an lbw appeal, with tracking software indicating the ball just pitched in line and would hit Root's leg stump.
Crawley raised his fifty but was bowled by Kuldeep Yadav who turned one sharply with his left-arm wrist spin.
Yadav then removed Ben Stokes just before tea when the England captain was undone for the second time in the match by a ball that barely bounced ankle high and was bowled off his pad.
In the morning session India had been rescued by Jurel, who put on a 76-run eighth-wicket stand with overnight partner Yadav.
James Anderson broke the stand when Yadav, on 28, played on to give the veteran seamer his 698th Test wicket.
The 41-year-old is now two victims away from becoming just the third bowler to take 700 wickets in Tests, after Sri Lanka's Muttiah Muralitharan (800) and the late Australian great Shane Warne (708).
Jurel, who made his debut in the third Test in Rajkot, hit six fours and four sixes in his 149-ball stay and picked up his maiden Test half-century.
Bashir, 20, who missed England's win in the first Test due to a visa issue, trapped debutant Akash Deep lbw for his fifth wicket and kissed the ground in celebration.
Scoreboard
England 1st innings 353 (J. Root 122 not out, O. Robinson 58; R. Jadeja 4-67)
India 1st innings (overnight 219-7; D. Jurel 30 not out, K. Yadav 17 not out)
- Jaiswal b Bashir 73
- Sharma c Foakes b Anderson 2
- Gill lbw b Bashir 38
- Patidar lbw b Bashir 17
- Jadeja c Pope b Bashir 12
- Khan c Root b Hartley 14
- Jurel b Hartley 90
- Ashwin lbw b Hartley 1
- Yadav b Anderson 28
- Deep lbw b Bashir 9
- Siraj not out 0
Extras (b12, lb5, nb6) 23
Total (all out, 103.2 overs) 307
Fall of wickets: 1-4 (Sharma), 2-86 (Gill), 3-112 (Patidar), 4-130 (Jadeja), 5-161 (Jaiswal), 6-171 (Sarfaraz), 7-177 (Ashwin), 8-253 (Yadav), 9-293 (Deep), 10-307 (Jurel)
Bowling: Anderson 18-4-48-2, Robinson 13-0-54-0 (nb6), Bashir 44-8-119-5, Hartley 27.2-6-68-3, Root 1-0-1-0
England 2nd innings
- Crawley b Yadav 60
- Duckett c Sarfaraz b Ashwin 15
- Pope lbw b Ashwin 0
- Root lbw b Ashwin 11
- Bairstow c Patidar b Jadeja 30
- Stokes b Yadav 4
- Foakes c and b Ashwin 17
- Hartley c Sarfaraz b Yadav 7
- Robinson lbw b Yadav 0
- Bashir not out 1
- Anderson c Jurel b Ashwin 0
Extras 0
Total (all out, 53.5 overs) 145
Fall of wickets: 1-19 (Duckett), 2-19 (Pope), 3-65 (Root), 4-110 (Crawley), 5-120 (Stokes), 6-120 (Bairstow), 7-133 (Hartley), 8-133 (Robinson), 9-145 (Foakes), 10-145 (Anderson)
Bowling: Ashwin 15.5-0-51-5, Jadeja 20-5-56-1, Siraj 3-0-16-0, Yadav 15-2-22-4
Toss: England
Umpires: Kumar Dharmasena (SRI), Rod Tucker (AUS)
TV umpire: Joel Wilson (WIS)
Match referee: Jeff Crowe (NZL)