Darren Bravo hit his first international century while Kirk Edwards missed his second of the match as West Indies tightened their grip over Bangladesh in the second test on Monday.
After removing the three remaining Bangladesh wickets in just over an hour to earn a 124-run first innings lead, the dominant tourists finished day three on 207 for three to brighten their victory prospects.
West Indies now lead by 331 runs with Bravo (100 not out) and nightwatchman Kemar Roach (four not out) at the crease.
Bravo sparkled in a 151-run third wicket stand with Kirk Edwards (86) before left-arm spinner Suhrawadi Shuvo broke the partnership.
Edwards, who hit 121 in the first innings, survived a scare on 69 when Shakib Al Hasan appealed for a catch off paceman Rubel Hossain only for the umpires to rule in the batsman's favour.
Replays suggested that the ball touched the ground before reaching Shakib, who was fielding at midwicket.
Shuvo denied Edwards his second century of the match though, bowling him with a fuller length delivery.
Bravo made the most of two reprieves he received on 45 when Mushfiqur Rahim and Imrul Kayes dropped him in the same Shakib over.
Bravo also survived a strong caught-behind appeal on 98 before bringing up his maiden test century with two runs off the last ball of the day bowled by Shuvo.
Earlier, West Indies lost their scoreless opener Kraigg Brathwaite to the second ball of their second innings when Naeem Islam ran him out with a direct throw.
Indian Grand Prix
Shakib gave Bangladesh their second success in the second session when he had Kieran Powell caught by Nasir Hossain for 12 before Bravo and Edwards took over.
Earlier, Bangladesh, resuming on 204 for seven wickets, could add only 27 runs in 17 overs before being dismissed for a first innings total of 231.
The West Indies bowlers displayed rare discipline, conceding no extra runs, which should please a team that travels to India this week to play three tests and five one-dayers.
Leg-spinner Devendra Bishoo deceived overnight batsman Shuvo (15) with a flighted delivery to give West Indies their first success of the morning with Brathwaite taking the catch at forward short-leg.
The dismissal exposed the Bangladesh tail, prompting overnight batsman Nasir Hossain (42) to go for a slog sweep against Marlon Samuels that found Edwards at deep midwicket.
Bishoo, who finished with three for 62, bowled Shahadat Hossain (4) to give West Indies a 124-run first innings lead.