The tourists were 352 for seven at lunch with debutant Liam Dawson (27) and Adil Rashid (eight) battling on at the break.
The tourists, who resumed the day on 284-4, were 352 for seven at lunch with debutant Liam Dawson (27) and Adil Rashid (eight) battling on at the break.
Spinner Ravichandran Ashwin struck on the very first over of the day to send Ben Stokes trudging back to the pavilion after getting him caught behind for six.
Paceman Ishant Sharma, who made an impressive return from an illness after giving India its first breakthrough on Friday, kept up the pressure with the wicket of Jos Buttler (five).
Ali (146) seemed relentless in his drive to consolidate England's position in the first innings after adding 26 runs to his overnight score but his efforts were cut short just after the first drinks interval.
Fast bowler Umesh Yadav got the prized wicket of Ali after the left-handed batsman mistimed a pull to square leg and Ravindra Jadeja pouched the ball safely.
Ali's controlled knock was laced with 13 fours and a six as he capitalised on an early reprieve -- on nought -- when Lokesh Rahul dropped him at mid-wicket off Jadeja, who has taken three wickets so far.
Allrounder Dawson and Rashid then tried to stem the rot with an unbeaten 31-run stand as the duo looked solid with their defences against the persistent Indian attack.
Earlier Ali was instrumental in reviving the England innings with his fourth Test century on the opening day after the visitors had lost their openers early while batting first.
Ali's 146-run third-wicket stand with Joe Root (88) remains the highlight of the innings, which also saw a brave knock from Jonny Bairstow (49).
England, who have already lost the series 3-0, are searching for a consolation win before they head home for their Christmas break.