Lower order batsman Ravindra Jadeja scored a career-best 90 before spin partner Ravi Ashwin wrecked England's top order to put the hosts firmly in charge of the third test in Mohali.
Jadeja fell agonisingly short of his maiden test century but shared 75-plus partnerships with Ashwin and Jayant Yadav to give India, who were all out for 417, a handy first-innings lead of 134 runs.
Ashwin struck three times in the final session as England, 1-0 down in the five-match series, slumped to 78-4 at the end of third day, still 56 runs behind.
Joe Root was unbeaten on 36 at the close with nightwatchman Gareth Batty on nought and the touring side face an uphill battle to save the match at the Punjab Cricket Association Stadium.
"From 150-odd for five, we built up the innings and put the team in a strong position," Jadeja told reporters.
"If number 7-11 batsmen can give you 50-100 runs, it's a bonus for any team. Luckily we are doing that.
"It also suggests we are not overly reliant on the top order to score those runs."
Resuming on 271-6, India needed four overs to erase the 12-run first-innings deficit before their lower order batsmen led them to a substantial lead.
England's New Zealand born all-rounder Ben Stokes, who produced a lion-hearted effort with the ball to claim 5-73, earned a breakthrough when he dismissed Ashwin for 72, a composed knock including 11 fours.
The Ashwin-Jadeja stand was worth a match-high 97 runs and Jadeja went on to complete his third test fifty, celebrating with his trademark swirling of the bat, before accelerating and smacking four boundaries in one Chris Woakes over.