Chittagong: Spinner Kuldeep Yadav and seamer Mohammed Siraj wreaked havoc with the ball sharing seven Bangladesh wickets between them to put India in the box seat in the opening test in Chittagong on Thursday.
Kuldeep's career-best 40 had already helped India post 404 in their first innings after resuming day two on 278-6.
When they returned, Siraj (3-14) wrecked Bangladesh's top order before Kuldeep (4-33) joined the party to leave the home side reeling at 133-8 at stumps, still 271 behind.
Mehidy Hasan (16), Bangladesh's last recognised batsman, and Ebadot Hossain (13) will hope they can produce something special to try and avoid a follow-on when they resume on Friday.
Earlier, Ravichandran Ashwin and Kuldeep dashed Bangladesh's hopes of quickly polishing off the Indian tail when play resumed at the Zahur Ahmed Chowdhury Stadium.
Overnight batsman Shreyas Iyer added only four runs to his overnight score of 82 before falling to Ebadot but the collapse Bangladesh so desired did not materialise.
Instead, Ashwin and Kuldeep combined in an 87-run stand to take India near the 400-mark.
Ashwin made 58 before Mehidy (4-112) removed him stumped.
Kuldeep hit five fours before falling to left-arm spinner Taijul Islam who returned 4-133.
Siraj removed Najmul Hossain with the first delivery of the Bangladesh innings and Umesh Yadav sent back Yasir Ali in the fourth over with only five runs on the board.
Litton Das hit five boundaries in his 24 but could not bring his bat down in time to stop a Siraj delivery which hit the bottom of the bat before crashing onto stumps.
Kuldeep then ripped the heart out of the Bangladesh batting lineup.
The left-arm wrist spinner dismissed rival captain Shakib Al Hasan with his second delivery and sent back Nurul Hasan when Shubman Gill took a sharp catch at short leg.
Kuldeep trapped Mushfiqur Rahim lbw with a ball that kept low and got rid of Taijul with a googly.
"I was a bit nervous at the start," Kuldeep told the official broadcasters.
"After a couple of overs I started feeling good.
"I was mixing my deliveries and was getting good turn as well."
KL Rahul b Khaled 22
Shubman Gill c Yasir b Taijul 20
Cheteshwar Pujara b Taijul 90
Virat Kohli lbw b Taijul 1
Rishabh Pant b Mehidy 46
Shreyas Iyer b Ebadot 86
Axar Patel lbw b Mehidy 14
Ravichandran Ashwin st Nurul b Mehidy 58
Kuldeep Yadav lbw b Taijul 40
Umesh Yadav not out 15
Mohammed Siraj c Mushfiqur b Mehidy 4
Extras (lb 1, nb2, p5) 8
Total (all out; 133.5 overs) 404
Fall of wickets: 1-41(Gill), 2-45(Rahul), 3-48(Kohli), 4-112(Pant, 5-261 (Pujara), 278-5(Patel), 6-278 (Axar), 7-293 (Iyer), 8-385 (Ashwin), 9-393 (Yadav), 10-404 (Siraj)
Bowling: Ebadot 21-2-70-1(nb2), Khaled 20-3-43-1, Shakib 12-4-26-0, Taijul 46-10-133-4, Mehidy 31.5-6-112-4, Yasir 1-0-7-0, Najmul 2-0-7-0
Bangladesh first innings
Najmul Hossain c Pant b Siraj 0
Zakir Hasan c Pant b Siraj 20
Yasir Ali b Yadav 4
Litton Das b Siraj 24
Mushfiqur Rahim lbw b Kuldeep 28
Shakib Al Hasan c Kohli b Kuldeep 3
Nurul Hasan c Gill b Kuldeep 16
Mehidy Hasan Miraz not out 16
Taijul Islam b Kuldeep 0
Ebadot Hossain not out 13
Extras (b6, lb3) 9
Total (eight wickets; 44 overs) 133
To bat: Khaled Ahmed
Fall of wickets: 1-0 (Najmul), 2-5 (Yasir), 3-39 (Litton), 4-56 (Zakir), 5-75 (Shakib), 6-97 (Nurul), 7-102 (Mushfiqur), 8-102 (Taijul)
Bowling: Siraj 9-1-14-3, Umesh 8-1-33-1, Ashwin 10-1-34-0, Kuldeep 10-3-33-4, Axar 7-3-10-0
Umpires: Michael Gough (ENG), Sharfuddoula Saikat (BAN)
TV Umpire: Chris Brown (NZL)
Match Referee: Ranjan Madugalle (SRI)