Indian spinner Ravichandran Ashwin's allround show pushed England on the brink of another defeat as the visitors were struggling on the third day of the third Test in Mohali on Monday.
England were 78 for 4 with Joe Root unbeaten on 36 at stumps on Day 3, still trailing by 56 runs.
For India, Ashwin, who scored a crucial 72 runs, rattled England's top order with three wickets.
The visitors had earlier conceded a 134-run first-innings lead after India's lower-order batsmen gave the hosts control of the game in Mohali.
Ashwin drew first blood, getting England skipper Alastair Cook bowled for 12.
The England skipper had been living dangerously, with two lbw calls against him going for reviews, first by India and then by the batsman himself. But he survived only to see his stumps shattered later on.
England were already hurt by the absence of teenage opener Haseeb Hameed, who is in danger of missing the series with a hand injury and has yet to bat in this innings.
Ashwin kept up the pressure from his end as he bamboozled Moeen Ali (5) with a flighted delivery, causing the batsman to give away a catch to mid-on.
Root, who opened in place of Hameed, tried to steady the innings with Jonny Bairstow, but the wicketkeeper-batsman's resistance did not last long.
Off-spinner Jayant Yadav got Bairstow, who top-scored with a dogged 89 in England's first innings of 283 but this time was caught behind for 15.
An unrelenting Ashwin, the world's top-ranked Test bowler, soon trapped Ben Stokes lbw for five as the visitors slipped further.
Earlier the Indian innings saw five half-centuries before the hosts, who resumed the day on 271-6, were bowled out for 417 in the afternoon session.
Ravindra Jadeja top-scored with a dominant 90 while Jayant Yadav's 55 -- his maiden fifty in only his second game -- gave the England bowlers a frustrating two sessions of play.
Seam bowler Stokes claimed his third Test five-wicket haul while leg-spinner Adil Rashid took four wickets.
Jadeja, who registered his career-best Test score surpassing his 68 at Lord's in 2014, fell 10 runs short of his maiden Test ton. But his 80-run stand with Jayant Yadav underpinned India's impressive lower-order performance.
The left-handed Jadeja, who started the day on 31, took over responsibility for piloting the innings after the fall of his overnight partner Ashwin for 72.
Ashwin's wicket ended a 97-run seventh-wicket stand between him and Jadeja. The pair had lifted India after the loss of four wickets in the final session on Sunday.
Skipper Virat Kohli (62) and Cheteshwar Pujara (51) also contributed half-centuries.