India finished the penultimate day on 39-1, still needing 381 to win.
A cautious England spared India the ignominy of a follow-on but set them a daunting 420-run victory target in the opening Test at Chennai's MA Chidambaram Stadium on Monday.
England, who had posted a mammoth 578 in the first innings, bowled India out for 337 but opted against enforcing the follow-on at Chennai's MA Chidambaram Stadium.
The tourists walked out to bat instead and were bowled out for 178 an hour before stumps, baffling many by their refusal to declare which would have given them more time to bowl out India.
The hosts finished the penultimate day on 39-1, still 381 behind the target, with Shubhman Gill batting on 15 and Cheteshwar Pujara on 12.
"Obviously, we're ahead in the game," England bowling coach Jon Lewis told a video conference.
"We played some really good cricket in this game. We're confident that we can create enough chances to win the game tomorrow.
"I think we're in a really strong position."
Earlier on Monday, Washington Sundar led India's rearguard resistance with an unbeaten 85 before he ran out of partners.
The all-rounder added 80 runs with Ravichandran Ashwin in a spirited seventh-wicket stand to take India, who had resumed on 257-6, past the 300-mark.
Jack Leach had bled 94 runs in 17 wicketless overs on Sunday when Rishabh Pant smacked him for five sixes.
The left-arm spinner finally tasted success when he dismissed Ashwin for 31 and went on to claim the wicket of Shahbaz Nadeem (nought) as well.
James Anderson had also toiled without success on Sunday but claimed the last two Indian wickets, leaving Sundar stranded 15 runs from a maiden Test century.
When England came out for their second innings, Ashwin dismissed Rory Burns with the very first ball and went on to claim 6-61 as England batted on with a safety-first approach.
Ishant Sharma dismissed Dan Lawrence to claim his 300th Test wicket and Joe Root, who had smashed 218 in the first innings of his 100th Test, made 40 before Jasprit Bumrah trapped him lbw.
Ashwin then ran through England's batting order, dismissing Dom Sibley, Ben Stokes and Dom Bess and finally removing Jofra Archer and James Anderson in the same over.
India lost opener Rohit Sharma early, with Leach spinning one past the bat to hit the off-stump.
Ishant said India, having chased down 328 in their previous Test against Australia in Brisbane, were optimistic about victory.
"It all depends how we start tomorrow," the paceman told the broadcasters.
"If we get a good start, I'm sure that we can chase this down, because we have a fearless batting line-up.
"So we're obviously very positive about this."