After Ravichandran Ashwin took six wickets to dismiss England for 178 on day four of the opening Test on Monday, India lost Rohit Sharma in their chase for 420.
After spinner Jack Leach bowled Sharma for 12 on a worsening Chennai pitch, the hosts reached 39 for one at stumps.
At the end, Shubman Gill, on 15, and Cheteshwar Pujara, on 12, were batting with India needing 381 more runs to win the first of the four Tests.
Ashwin claimed his 28th five-wicket haul in England’s second innings on a dominant day for spinners.
With the first ball of the innings, the off-spinner sent back Rory Burns and hit critical blows, including taking Ben Stokes for seven.
With 40 off 32 deliveries, Skipper Joe Root top-scored. In the first innings of his 100th Test, he hit 218.
Before getting stuck lbw by paceman Jasprit Bumrah, Root hit seven boundaries. Ollie Pope (28) and Dom Bess (25) helped to create a major lead for England as well.
Two wickets were taken by left-arm spinner Shahbaz Nadeem and wicketkeeper-batsman Jos Buttler was stumped for 24. Ishant Sharma’s 300th Test wicket was Dan Lawrence (18).
In their first innings in the morning session, India were bowled out for 337, 42 runs shy of escaping the follow-up despite Washington Sundar’s unbeaten 85.
In their first innings, England, who scored 578, opted against letting the home side bat again.
After the hosts began the day 257-6, Leach and paceman James Anderson took two wickets each in the morning session to pack out India. Sundar, who made his debut last month in the fourth Indian Historic Victory Test in Australia, put on 80 runs with overnight partner Ashwin, who made 31.