Bangladesh reduced West Indies to 75-5 at stumps after racking up 508 Saturday in its first innings on Day 2 of the second Test.
Mahmudullah hit his career-best 136 for Bangladesh, complemented by three half-centuries from skipper Shakib Al Hasan (80), Shadman Islam (76) and Liton Das (54), after which spinners took charge on an increasingly deteriorating pitch.
Offspinner Mehidy Hasan and left-arm spinner Shakib led the way, spinning the ball viciously as West Indies slumped to 29-5 in 12 overs.
Shakib made the breakthrough in just the first over, knocking off the middle stump of Kraigg Brathwaite for 0, to trigger the collapse.
Mehidy Hasan ended Keiran Powell's (4) uncomfortable stay with a slider and Shakib fooled Sunil Ambris (7) with a turning delivery.
West Indies batsmen failed to show the required patience as the innings continued to unravel.
Mehidy Hasan struck twice in his consecutive overs — with a straight delivery that flattened the off stump of Roston Chase (0) and got the better of Shai Hope for 10, with a delivery that kept low.
Much-needed resistance came from Shimron Hetmyer and Shane Dowrich, who used their feet nicely against Bangladesh's four-pronged spin attack and shared a valuable 46-run in an unbroken sixth-wicket stand.
At stumps, Hetmyer was batting on 32, with Dowrich on 17. West Indies needs 234 more runs to avoid the follow-on in a series which is slipping away from the tourists after they lost the first of two tests by 64 runs.
Earlier, all 11 Bangladesh batsmen reached double digits for the first time, and the 14th occasion in test cricket history.
Shakib and Mahmudullah combined for a 111 run sixth-wicket stand after Bangladesh resumed the day on 259-5.
West Indies broke through as fast bowler Kemar Roach (2-61) had Shakib caught by Hope at gully.
Das paced the innings with a 62-ball 54 and shared a 92-run partnership with Mahmudullah to further frustrate West Indies.
The partnership looked dangerous until Das played a reverse sweep to throw away his wicket and left-arm spinner Jomel Warrican (2-91) then won a review to remove Mehidy Hasan for 18.
The two quick wickets gave West Indies hope but Mahmudullah, who cut past point for a boundary to raise his second century in three matches, kept the innings flowing. He smashed 10 boundaries in his 242-ball 136.
He shared 56 runs for the ninth wicket with Taijul Islam (26) and 36 with No. 11 batsman Nayeem Hasan (12 not out), to propel Bangladesh past 500 for the ninth time, and the second occasion against West Indies.