Marlon Samuels struck his fifth test century to move the West Indies towards Bangladesh's first innings total at the close of the second day's play in the second test.
Samuels (109 not out) and Darren Bravo, unbeaten on 85, added 198 runs for the second wicket as the tourists closed on 241 for two wickets to trail Bangladesh by 146 runs.
The West Indies had earlier lost openers Kieran Powell (13) to pace bowler Rubel Hossain when the left-hander gave a catch to Shakib Al Hasan at deep square leg then Chris Gayle (25) was quickly removed by off-spinner Sohag Gazi.
Wicketkeeper Mushfiqur Rahim smartly caught Gayle when he tried to sweep Gazi but he could only manage an inside edge to leave the West Indies 43-2.
However Samuels and Bravo kept Bangladesh at bay in the remaining hours, batting with ease on a pitch which did not offer any significant turn to the local spinners.
Samuels, quiet in the tourists' first test win in Dhaka, completed his century with a four off Shakib then raised his bat to acknowledge his teammates' applause.
Earlier West Indies needed a little over five overs to end the first innings of Bangladesh, who added 22 to be all out for 387.
Darren Sammy took a catch off his own bowling to dismiss Mahmudullah for 76 and end Bangladesh's record ninth wicket stand at 184.
Mahmudullah and Abul Hasan fell just 12 runs short of the world record of 195, held by South Africa's Mark Boucher and Pat Symcox against Pakistan at Johannesburg in 1998.
Abul, unbeaten on 100 overnight which had made him only the second debutant to score a century batting at number 10, missed another record when he was caught by Sammy off Fidel Edwards for 113.
Another five runs would have seen Abul overtake Englishman Walter Read's best score by a number 10 of 117 against Australia at the Oval in 1884 but Edwards, with figures of 6-90 and his third six-wicket test haul in 55 matches, preserved the record.
Should bouncers be banned from cricket?