The hosts were 39 for one at Stumps and need 381 more runs to win.
India batted for 13 overs in the final session after England were all out for 178 in the second innings.
India’s openers had started positively in the second innings, with Shubman Gill finding his timing to hit Leach for three early boundaries.
However, losing the wicket of Rohit Sharma in their second innings, was a big blow.
Rohit fell to an absolute ripper of a delivery by Jack Leach and could only muster 12 runs from 20 balls.
However, Shubman Gill (15) and Cheteshwar Pujara (12) remained unbeaten and ensured there were no more setbacks before the close of play.
Earlier on Day 4, England scored 178 runs in their second innings, setting a target of 420 runs.
England though struggled a bit as the pitch became tougher for stroke-making. Skipper Joe Root was top-scorer with his 40-run knock while Ollie Pope (28) was the next best.
Ravichandran Ashwin was in top form for India, taking six wickets which included the dismissals of Rory Burns (0), Dom Sibley (16), Ben Stokes (7), Dom Bess (25), Jofra Archer (5) and James Anderson (0).
This was Ashwin’s 28th five wicket haul.
Shahbaz Nadeem took two wickets, while Ishant Sharma and Jasprit Bumrah chipped in with one each.
Ishant Sharma became the sixth Indian and third pacer from the country to take 300 wickets in Tests cricket when he dismissed Dan Lawrence (18).
Earlier, like the Gabba Test, Washington Sundar came to India’s rescue with an unbeaten 85 after the home team resumed the day at 257 for six.
If India manage to make the required 420, it will be the highest run chase in the history of test cricket.
India 337 (Sundar 85*) and 37 for 1 need 381 runs to beat England 578 and 178 (Root 40, Ashwin 6-61)