Shakib Al Hasan gifted his wicket on 97 to West Indies in a disappointing end to an otherwise remarkable Saturday for the all-rounder who became only the second bowler to take 100 Test wickets for Bangladesh.
The stumps on the fourth day were drawn immediately after Shakib went, with Bangladesh on 226 for six wickets in their second innings of the second Test and needing 35 to make West Indies bat again following the visitor's declaration on 648-9.
Shakib defied West Indies for more than three hours but just when he looked set for a well-deserved century he charged down left-arm spinner Veerasammy Permaul and was caught by Tino Best at mid off.
Shakib shared 144 runs with Nasir Hossain for the sixth wicket after a familiar Bangladesh batting collapse cost them their first five for 82 runs.
The left-armer had earlier taken four wickets to join Mohammad Rafique as the only Bangladesh Test bowlers to break the 100 mark.
Nasir, who remained unbeaten on 64, will resume the fifth day's play hoping to bat out a session or two and give Bangladesh a chance of avoiding the defeat.
West Indies took a wicket off the third ball of Bangladesh's second innings to boost their chance of a 2-0 series sweep.
Fidel Edwards trapped opener Nazimuddin leg before for a golden duck before Best took three wickets in quick succession to rip the heart out of Bangladesh's top order.
Best bowled opener Tamim Iqbal off his first ball in the second innings for 28 and rattled the stumps of Naeem Islam (two) the same over.
Shahriar Nafees was given a reprieve on eight after Edwards had him caught by Marlon Samuels at gully when television replays confirmed the bowler bowled a front-foot no-ball.
However, Shahriar was unable to take advantage of the let off and was out for 21, edging Best at slip for Darren Sammy to complete the catch.
Skipper Mushfiqur Rahim threw his wicket when he charged Permaul down the track and missed the line to be bowled for 10.
Earlier, Shivnarine Chanderpaul made some quick runs before Shakib pushed West Indies towards a declaration.
Shakib had Denesh Ramdin caught by Rahim for 31 three balls before he made Sammy his 100th Test wicket as Mahmudullah took the West Indies captain at slip for nought.
The bowler then took the wickets of Permaul (13) and Sunil Narine in successive balls to go on a hat-trick.
Chanderpaul staved off the hat-trick ball and was unbeaten on 150 when the declaration came second over into the session.
Resuming on 109, Chanderpaul struck 12 fours and a six in his 282-ball innings to add to his unbeaten double century in the first Test in Dhaka, which West Indies won by 77 runs.
Bangladesh 1st innings 387
West Indies 1st innings (overnight 564-4)
C Gayle c Rahim b Gazi 25
K Powell c Shakib b Hossain 13
D Bravo lbw b Gazi 127
M Samuels c sub (Sunny) b Hossain 260
S Chanderpaul not out 150
D Ramdin c Rahim b Shakib 31
D Sammy c Mahmudullah b Shakib 0
V Permaul c Gazi b Shakib 13
S Narine c Nafees b Shakib 0
F Edwards c Shakib b Gazi 2
Extras: (b-10, lb-7, nb-8, w-2) 27
Total: (for 9 wkts decl; 200.3 overs) 648
Fall of wickets: 1-37, 2-43, 3-369, 4-546, 5-621, 6-621, 7-639, 8-639, 9-648.
Bowling: Gazi 57.3-4-167-3, Hasan 24-0-113-0, Hossain 31-8-86-2, Islam 14-1-43-0, Shakib 52-11-151-4, Mahmudullah 10-0-42-0, Nasir 12-1-29-0
Bagladesh 2nd innings:
Tamim Iqbal b Best 28
Nazimuddin lbw b Edwards 0
Shahriar Nafees c Sammy b Best 21
Naeem Islam b Best 2
Shakib Al Hasan c Best b Permaul 97
Mushfiqur Rahim b Permaul 10
Nasir Hossain not out 64
Extras: (lb-2, nb-1, w-1) 4
Total: (6 wickets; 56.1 overs) 226
Fall of wickets: 1-1, 2-49, 3-51, 4-62, 5-82, 6-226.
Bowling: Edwards 11-0-65-1, Narine 9-0-48-0, Permaul 16.1-2-51-2, Best 8-0-26-3, Gayle 4-0-15-0, Sammy 8-3-19-0.