Ravichandran Ashwin and Ravindra Jadeja's unbeaten seventh-wicket partnership of 67 pushed India towards a first-innings lead over England in the third Test.
England added just 15 runs to their overnight total before their first innings was brought to a close with 283 on the board, a total that India are now just 12 runs adrift of following day two in Mohali.
India largely dominated proceedings and half-centuries from Cheteshwar Pujara (51) and captain Virat Kohli (62) had them past 150 with just three wickets down.
Ajinkya Rahane (0) and Karun Nair (4) each went cheaply, though, and Kohli's exit with 204 on board seemed set to be the key moment in an England turnaround.
Ashwin (57 not out) and Jadeja (31no) had other plans, however, and steadied the ship to steer India to 271-6 at the close, as they seek to take a 2-0 lead in the five-match series.
Adil Rashid (4) went in the second over of the day and, though James Anderson posted an unbeaten 13, England failed to surpass 300 - Mohammed Shami (3-63) dismissing Gareth Batty (1).
Murali Vijay (12) and Parthiv Patel, playing in his first Test since 2008, put on 39 for the first wicket before Ben Stokes (2-48) had Vijay caught behind.
Patel was unable to mark what had looked a promising return to the Test arena with a half-century as he was given out lbw at the hands of Rashid (3-81) on review for 42.
But, in typical fashion, Kohli's arrival at the crease tilted matters firmly in India's favour.
The India skipper continued his tremendous form from Visakhapatnam - where he scored 167 and 81 in the second Test - to combine with Pujara for a patient stand of 75.
Pujara, who hit eight boundaries for his 51, was finally removed when Chris Woakes claimed a superb low catch.
Two overs later Rashid had his third wicket of the day as Rahane lasted only six balls, with Nair then undone by a direct-hit run out by Jos Buttler.
Stokes had been reprimanded by the ICC for an exchange he had with Kohli following his exit on day one and the all-rounder referenced that episode by covering his mouth after Kohli nicked his delivery behind to Jonny Bairstow.
However, it was the batting of Ashwin and Jadeja (31 not out) that did the talking late in the day, the former hitting eight boundaries in 82 balls in a counter-attack that brought about his ninth Test fifty.