India's spinners sent back the top three Bangladesh batsmen in the second innings of the one-off test at Hyderabad on Sunday to keep the hosts on course for victory.
Chasing an improbable target of 459 in four sessions for a win, Bangladesh reached 103-3 at stumps on the fourth day of their maiden test in India, the world's top-ranked nation.
Shakib Al Hasan was unbeaten on 21 for Bangladesh with Mahmudullah nine not out at the other end.
Off-spinner Ravichandran Ashwin, who during the day became the fastest to reach 250 wickets in tests, dismissed Tamim Iqbal (3) and Mominul Haque (27) while spin partner Ravindra Jadeja picked up the wicket of Soumya Sarkar, who made 42.
Sarkar and Mominul added 60 for the second wicket but both left-handers were out in the space of 14 deliveries, dampening the touring side's hopes of saving the test match.
Cheteshwar Pujara hit an unbeaten 54 off 58 balls as India declared their second innings on 159 for four at tea.
The hosts batted for 29 overs and scored at a rate of more than five runs per over with useful contributions from captain Virat Kohli (38) and Ajinkya Rahane (28). Paceman Taskin and Shakib shared the four Indian wickets.
In the morning session, Bangladesh captain Mushfiqur Rahim registered his fifth test hundred before his side were bundled out for 388 as the hosts took a first-innings lead of 299.
The 29-year-old wicketkeeper-batsman was the last man out for his side on 127 with Bangladesh's innings ending shortly before lunch. Kohli opted against enforcing the follow-on after his bowlers needed almost an entire session to pick up Bangladesh's last four wickets.
Resuming on 322-6, the visitors got off to a bad start as seamer Bhuvneshwar Kumar breached the defence of half-centurion Mehedi Hasan with the fourth ball of the morning without a run being added to their overnight total.
Paceman Umesh Yadav, the most impressive of India's bowlers, got Taijul Islam to glove one back to wicketkeeper Wriddhiman Saha, raising fears for Mushfiqur that he could run out of partners before reaching three figures.
However, Taskin Ahmed stayed with his captain for a 39-run ninth-wicket stand, during which Mushfiqur scored freely.
The diminutive right-hander top-edged Ishant Sharma for a six and then reached his century when the lanky bowler miss-fielded near the boundary to allow a four.
He was finally out, caught down the leg side to Ashwin, who reached 250 test wickets with the dismissal.
Umesh finished with three wickets, while Ashwin and Jadeja picked up two wickets apiece.