Naeem Islam scored a patient maiden century as Bangladesh made the West Indies toil on a placid wicket before amassing 455 for 6 wickets in the first Test in Dhaka on Thursday.
The home side rode on Naeem's 108 to cut the West Indies' lead to 72 at close on the third day after the tourists had declared their first innings at 527-4 on the previous afternoon.
It is already Bangladesh's second highest score in Tests and they can realistically hope to improve their best of 488 all out against Zimbabwe in Chittagong in 2005.
Bangladesh, who resumed on 164 for three, had a record 167-run fourth-wicket partnership between Naeem and Shakib to thank for taking them to this position.
Shakib missed out on his third Test century when he fell to Ravi Rampaul for 89 half an hour into the second session with substitute fielder Assad Fudadin taking the catch at cover.
He was given a reprieve on 26 when nicking Rampaul to wicketkeeper Denesh Ramdin as television replays confirmed the bowler had overstepped.
Naeem played solidly, completing his century off 228 balls with a boundary through the fine leg off Tino Best.
Darren Sammy ended his resistance forcing an edge to Ramdin but not before the 26-year-old right-hander, unbeaten on 27 overnight, had faced 255 balls and stayed nearly six hours at the crease.
Naeem, who also added 76 runs with Mushfiqur Rahim for the fifth wicket, hit 17 fours in his innings.
West Indies debutant left-arm spinner Veerasammy Permaul took a return catch to make Rahim his first Test victim after the Bangladesh captain scored 43.
Nasir Hossain (33 not out) and Mahmudullah (42 not out) were at the crease when the stumps were drawn as Bangladesh eased past the 450-run mark for only the second time in their 12-year Test history
West Indies (1st innings): 527-4 declared
Bangladesh (1st innings): (overnight 164-3)
T. Iqbal c Narine b Sammy 72
Z. Siddique c Bravo b Rampaul 7
S. Nafees c Ramdin b Rampaul 31
N. Islam c Ramdin b Sammy 108
Shakib Al Hasan c Sub b Rampaul 89
M. Rahim c&b Permaul 43
N. Hossain not out 33
Mahmudullah not out 42
Extras: (b-8 lb-11 w-3 nb-8) 30
Total: (six wickets; 126 overs) 455
To bat: S.Hossain, S.Gazi, R.Hossain
Fall of wickets: 1-25, 2-88, 3-119, 4-286, 5-362, 6-368.
Bowling: Ravi Rampaul 26-2-101-3 (nb-4), Tino Best 20-3-68-0 (w-3), Darren Sammy 23-3-83-2, Sunil Narine 21-5-89-0 (nb-2), Veerasammy Permaul 27-7-60-1, Chris Gayle 3-0-14-0, Marlon Samuels 6-0-21-0.