Yashasvi Jaiswal took a stunning left-handed catch in the slips to remove Zakir before Ashwin, who smashed a match-defining century in the first innings, produced a three-wicket burst.
India set Bangladesh a mammoth victory target of 515 and then reduced them to 158-4 to close in on a comprehensive victory on day three of the opening Test between the neighbouring countries on Saturday.
Bangladesh began well but some smart catching by the Indians and three wickets for home hero Ravichandran Ashwin rattled the tourists.
Skipper Najmul Hossain Shanto (51) and all-rounder Shakib Al Hasan (five) were in the middle when bad light forced early stumps with Bangladesh still needing a hefty 357 runs to win.
Faced with an onerous task in their second innings, Bangladesh openers Zakir Hasan (33) and Shadman Islam (35) decided to counter-attack in their 62-run stand.
Yashasvi Jaiswal took a stunning left-handed catch in the slips to remove Zakir before Ashwin, who smashed a match-defining century in the first innings, produced a three-wicket burst.
Gill and KL Rahul took diving catches to dismiss Shadman and Mushfiqur Rahim respectively, while Mominul Haque lost his middle stump to the wily off-spinner.
While wickets tumbled around him, Shanto played his natural aggressive game bringing up his fifty with his third six.
Earlier, Shubman Gill struck an unbeaten 119 and Rishabh Pant (109) smashed a hundred in his comeback Test before India declared their second innings on 287-4.
The hosts were already in the ascendancy since routing Bangladesh for 149 in their first innings and claiming a lead of 227 at the M A Chidambaram Stadium.
Gill signalled their positive intent when the elegant right-hander clobbered off-spinner Mehidy Hasan Miraz for two sixes in an over to reach his fifty.
Pant took a more conventional approach, a single off the spinner, to bring up his half-century in his first test since a horrific car accident in late 2022.
Bangladesh squandered a chance to break the stand when Shanto dropped Pant on 72.
Rubbing salt into the wound, Pant hit Shakib for back-to-back fours in the left-arm spinner's next over and beat Gill to the 100 mark.
Pant smashed 13 fours and four sixes in his sixth Test hundred before giving a return catch to Mehidy.
Gill, whose fifth Test hundred included 10 fours and four sixes, could not be dislodged though.
1st Test PIX: Pant, Gill slam tons as India dominate
Is Rishabh Pant the New Sehwag?
'Bowler without a weakness'
Has Batter Kohli Lost His Mojo?
Why Didn't Kohli Take The DRS?