Darren Bravo hit his first international century while Kirk Edwards missed his second of the match as the West Indies tightened their grip over Bangladesh in the second Test on Monday.
After claiming the three remaining Bangladesh wickets in just over an hour to earn a 124-run first innings lead, the dominant tourists finished Day 3 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.
He 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, the 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.
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.
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.
West Indies (1st innings): 355
Bangladesh (1 innings): (overnight 204-7)
T. Iqbal c Bravo b F. Edwards 14
I. Kayes c Brathwaite b F. Edwards 29
S. Nafees c Bravo b F. Edwards 7
R. Hassan lbw b F. Edwards 0
M. Rahim c Chanderpaul b F. Edwards 0
S. Al Hasan b Bishoo 73
N. Islam run out 45
N. Hossain c K. Edwards b Samuels 42
S. Shuvo c Brathwaite b Bishoo 15
S. Hossain b Bishoo 4
R. Hossain not out 2
Total: (all out; 68 overs) 231
Fall of wickets: 1-14, 2-36, 3-46, 4-46, 5-59, 6-143, 7-195, 8-225, 9-225.
Bowling: F. Edwards 13-0-63-5, K. Roach 9-0-52-0, D. Sammy 10-3-32-0, D. Bishoo 23-4-62-3, M. Samuels 13-2-22-1.
West Indies (2nd innings):
K. Brathwaite run out 0
K. Powell c Nasir b Al Hasan 12
K. Edwards b S Shuvo 86
D. Bravo not out 100
K. Roach not out 4
Extras: (lb-2 nb-3) 5
Total: (three wickets; 71 overs) 207
Fall of wickets: 1-0, 2-33, 3-184.
To bat: M. Samuels, S. Chanderpaul, C. Baugh, D. Sammy, F. Edwards, D. Bishoo.
Bowling: R. Hossain 9-2-22-0 (nb-2), N. Hossain 16-3-49-0, S. Al Hasan 17-1-62-1, N. Islam 7-2-13-0, S. Shuvo 15-2-32-1, S. Hossain 3-0-15-0 (nb-1), R. Hassan 4-0-12-0.