Opener Shubman Gill and returning Rishabh Pant hit centuries as India set Bangladesh an imposing victory target of 515 in the first Test after they declared their innings on 287-4 on Saturday.
Pant, who made 109, and Gill, unbeaten on 119, put on 167 runs for the fourth wicket to ram home India's advantage in Chennai after they bundled out Bangladesh for 149 on day two.
Pant, a left-handed wicketkeeper-batsman, smashed the bowlers to every corner before a double off Shakib Al Hasan got him his sixth Test century.
The 26-year-old, who survived a near-fatal car crash in December 2022, took off his helmet and raised his bat to acknowledge a standing ovation from the weekend crowd.
He finally fell caught and bowled by spinner Mehidy Hasan Miraz after his 128-ball knock that included 13 fours and four sixes.
Gill kept up the charge and raised his fifth Test ton as he took a bow in front of a cheering crowd before skipper Rohit Sharma called him and KL Rahul, on 22, back.
Gill and Pant, who survived a drop catch on 72, started cautiously on India's overnight 81-3 after early morning rain.
Pant let loose with two boundaries before Gill smashed Mehidy for two sixes in an over to raise his fifty.
The batting duo handled the spinners with ease and jumped out of the crease to hit boundaries.
India lost all three wickets including Rohit, for five, and Virat Kohli, for 17, on Friday.
Ravichandran Ashwin handed India an early advantage after his 113 lifted the hosts to 376 from a precarious 144-6.
Jasprit Bumrah turned on the heat to help bundle out Bangladesh for 149, giving the hosts a 227-run lead coming into the second innings.
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.