Ravichandran Ashwin rattled England's top order with three wickets to leave them reeling at 4-78 at stumps on day three of the third Test, still trailing India by 56 runs.
The visitors had earlier conceded a 134-run first-innings lead after India's lower order gave the hosts control of the game in Mohali.
At close of play Joe Root (36) and nightwatchman Gareth Batty (0) were at the crease.
Quick Single: Bairstow tops Healy, Boucher with another record
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, much to the delight of skipper Virat Kohli after the pair's running battle during the match.
Earlier, the Indian innings saw five half-centuries before the hosts, who resumed the day on 6-271, 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.
Quick Single: Send-offs, sledging and silence in Mohali
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 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.
India: Virat Kohli (capt), Murali Vijay, Karun Nair, Cheteshwar Pujara, Ajinkya Rahane, Parthiv Patel, Ravichandran Ashwin, Jayant Yadav, Ravindra Jadeja, Mohammed Shami, Umesh Yadav
England: Alastair Cook (capt), Haseeb Hameed, Joe Root, Moeen Ali, Jonny Bairstow, Ben Stokes, Jos Buttler, Adil Rashid, Chris Woakes, James Anderson, Gareth Batty
International cricket is more affordable than ever this summer, with adult tickets from $30, kids from $10 and family packages from $65 across every day of international cricket. Price for purchase at match. Transaction fee from $6.95 applies to online and other purchases. For more information and to purchase tickets, click here.