Centuries from Shubman Gill and Rishabh Pant helped India close in on victory in the first Test despite a spirited start to Bangladesh's chase for their target of 515 in Chennai on Saturday.
Bangladesh started briskly but lost wickets to reach 158-4 when bad light stopped play on day three, with the visitors still needing 357 for a win. India earlier declared their second innings on 287-4.
Pant, who made 109, and Gill, unbeaten on 119, put on 167 runs for the fourth wicket to ram home India's advantage in the second session after they bundled out Bangladesh for 149 on day two.
Bangladesh skipper Najmul Hossain Shanto was unbeaten on 51 at the close of play, with Shakib Al Hasan on five.
India were hitting Bangladesh with some "quality bowling", Bangladesh batting coach David Hemp told reporters.
"Very confident side, especially at home, so you are going to be challenged," he said.
"So it's a case of how do we match that. You have to look to score and that's what we just reinforce... to the batting group, to trust their strengths."
India spinner Ravichandran Ashwin took three wickets to add to his 113 with the bat in his team's first innings total of 376.
Bangladesh openers Zakir Hasan and Shadman Islam began briskly with 62 runs for the first wicket before Jasprit Bumrah ended their defiant stand to send back Zakir for 33. Ashwin dismissed Shadman for 35.
The veteran off-spinner kept up the charge when he bowled left-handed Mominul Haque for 13 with a flighted delivery that also turned. He then had Mushfiqur Rahim caught out, also for 13.
Najmul stood firm to reach his fifty and, with fellow left-hander Shakib for company, the two saw off the day in fading light.
The left-handed wicketkeeper-batsman Pant earlier smashed the Bangladesh bowlers to all parts of the ground before a double off Shakib gave 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.
Pant 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 before skipper Rohit Sharma called him and KL Rahul, on 22, back.
"Having got out the way I got out in the first innings, I was obviously very disappointed," Gill said of his first-innings duck.
"But it further motivated me to be able to spend a lot of time at the crease and put extra value on my wicket."
Gill and Pant, who survived a dropped catch by Najmul off Shakib on 72, started cautiously on India's overnight score of 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 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.