Indian quick Jasprit Bumrah led an inspired bowling attack to leave Bangladesh tottering on 112-8 at tea, chasing the hosts' 376 on day two of the first Test on Friday.
Tea was called when Bumrah took his third wicket in Chennai, after Ravichandran Ashwin's 113 in a marathon 199-run seventh-wicket stand with Ravindra Jadeja steered India to a challenging total.
Mehidy Hasan Miraz, on 12, was batting after Hasan Mahmud fell to Bumrah. Bangladesh trail by 264 runs.
India's bowlers came out firing and reduced Bangladesh to 40-5 early in the second session after Akash Deep's double strike on successive balls hurt the tourists before lunch.
Bumrah broke first to send back Shadman Islam bowled for two. Deep then bowled the left-handed Zakir Hasan for three and rattled the stumps of Mominul Haque for a duck.
Mushfiqur Rahim played out the hat-trick ball but managed just eight runs before he became Bumrah's second wicket of the day.
Shakib Al Hasan, who made 32, and wicketkeeper-batsman Litton Das, who scored 22, put on 51 runs but Jadeja dismissed them both in quick succession with his left-arm spin.
Earlier, Bangladesh fast bowler Hasan finished with figures of 5-83 after he rattled the Indian batting on day one, before Ashwin and Jadeja powered a fightback from the hosts.
The pair resumed with India on 339-6 overnight but pace bowler Taskin Ahmed broke the stand early, with Jadeja caught behind without adding to his overnight score of 86.
Deep hit a quickfire 17 with four boundaries before being dismissed by Taskin, who soon got his third with the wicket of hometown hero Ashwin, caught by skipper Najmul Hossain Shanto.
The 38-year-old Ashwin was given a standing ovation after a sixth Test ton, which included 10 fours and two sixes. Hasan wrapped up the innings with his second five-wicket haul in just his fourth Test.
India are looking to extend their lead at the top of the World Test Championship rankings as they begin a fresh Test season of 10 matches. Bangladesh have never beaten India in a Test.