Opener Kieran Powell smashed a century in each innings before Bangladesh captured late wickets to keep hopes of an unlikely result in the first Test in Dhaka on Friday.
The 22-year-old right-handed batsman scored 110 for his second century of the match to anchor his team to 244-6 at close on the fourth day, leading by 215 runs and setting up an intriguing fifth and final day.
In the morning Bangladesh were dismissed for 556 runs in their first innings, taking a slender 29-run lead over the West Indies first knock of 527-4 declared.
Powell, who made 117 in the first innings, batted with resolve and authority and added 189 runs for the second wicket with Darren Bravo who made 76.
West Indies first Innings 527-4 dec
Bangladesh first Innings
T Iqbal c Narine b Sammy 72
J Siddique c Bravo b Rampaul 7
SNafees c Ramdin b Rampaul 31
NIslam c Ramdin b Sammy 108
S Al Hasan c Asad b Rampaul 89
M Rahim c and b Permaul 43
NHossain c Gayle b Best 96
Mahmudullah c Powell b Narine 62
S Gazi b Narine 4
S Hossain b Narine 30
R Hossain not out 0
TOTAL: (all out) 556
Overs: 148.3. Batting time: 627 minutes.
Fall of wickets: 1-25, 2-88, 3-119, 4-286, 5-362, 6-368, 7-489, 8-493, 9-554, 10-556.
West Indies second innings
C Gayle c Rahim b Rubel 19
K Powell c Rahim b Shakib 110
D Bravo c Rahim b Rubel 76
M Samuels c Nafees b Gazi 1
D Ramdin lbw b Shakib 5
D Sammy not out 15
V Permaul b Gazi 10
TOTAL: (for 6 wickets) 244
Fall of wickets: 1-20, 2-209, 3-212, 4-218, 5-225, 6-244.
But left-arm spinner Shakib Al Hasan dismissed Powell and Denesh Ramdin for five and debutant Sohag Gazi took two wickets to stop the West Indian run flow sparked by Powell and Bravo.
Their stand is a new record for the second wicket against Bangladesh, beating the previous stand of 87 was between Chris Gayle and Ramnaresh Sarwan at Gros Islet in 2004.
Here Gayle failed again, scoring only 19 before falling to paceman Rubel Hossain.
Bangladesh could have dismissed Powell early but Junaid Siddique dropped a straight-forward catch off paceman Shahadat Hossain. Powell was only 17 then.
He took full advantage of the life and together with Bravo boosted the total to 124-1 at tea, pacing the innings well in the last session.
Powell hit Shakib for a towering six before reaching his hundred with three boundaries in one Rubel over. In all he hit 12 boundaries off 197 balls.
Powell showed delight on the milestone.
"This was a perfect opportunity to do something like this," Powell said of becoming the ninth West Indian to hit twin centuries in a Test.
"I am not too sure how often it happened but I am happy that it happened to me.
"I think we are still in a good position to try and get a win from here if we get into 300."
Earlier, Nasir Hossain missed his maiden hundred by just four runs but still helped Bangladesh overhaul the West Indian total.
The 20-year-old Nasir, playing only his fifth Test, hit four sixes and six boundaries during his fiery 136-ball knock - improving on his previous best of 79 against Pakistan at the same venue last year.
Resuming at 455-6, Bangladesh were guided towards the West Indian total by a solid 121-run stand for the seventh wicket between Nasir and Mohammad Mahmudullah (62) before Sunil Narine took two quick wickets.
Sensing Bangladesh would fell short of the West Indian total, Nasir took the attack to himself by adding 61 for the ninth wicket with Shahadat Hossain (13) and during the stand also took his team into the lead.
Nasir hit two sixes off Veerasammy Permaul and one off Narine to enter 90s but was caught off a miscued lofted shot off paceman Tino Best.
Paceman Ravi Rampaul and Narine finished with three wickets apiece.
The second and final Test will start in Khulna from November 21.