Mustafizur Rahman led an efficient bowling performance from Bangladesh to hold West Indies down to 247 for 9 in 50 overs.
A win in this game would ensure Bangladesh a spot in the tri-nations final with a game against Ireland in hand, and their bowlers have done half the job.
Mustafizur took his first four-wicket haul since September last year; it must have given him a lot of relief, having conceded 84 and 93 in his last two ODIs.
Mashrafe Mortaza took 3 for 60 while Shakib Al Hasan and Mehidy Hasan once again combined well as spinners, giving away only 68 runs in their 20 overs and taking a wicket each.
Opener Shai Hope got close to his third century in the tri-series but fell 13 runs short. His 87 off 108 balls, with six fours and a six, saved West Indies from sinking to a lower score.
Hope added 100 runs for the fifth wicket with captain Jason Holder, who made 62 off 76 balls with three fours and a six, and ensured West Indies' bowlers have a decent score to bowl at.
West Indies made a bold start when Sunil Ambris and Hope struck six fours in the first five overs. Ambris, who struck four of them, however, fell in the sixth over when he guided Mashrafe Mortaza to Soumya Sarkar at first slip.
The shot was at odds with how he had been batting until that point.
Darren Bravo's lean patch continued when he fell lbw to Mehidy Hasan Miraz, who had dropped him in the previous over.
Bravo has now made only 33 runs in four innings in the tri-series.
Roston Chase scratched around for 28 balls before chipping a simple catch to Mahmudullah at midwicket, off Mustafizur. Jonathan Carter falling lbw for 3 left West Indies 99 for 4 in the 24th over.
Bangladesh imposed themselves on the West Indies batsmen until the 30th over, going through 103 balls without conceding a boundary, with Mustafizur and Shakib bowling through the bulk of this phase.
Holder struck Soumya's part-time medium-pace for two fours to break the shackles, before Hope struck Mustafizur for the first six of the innings in the 38th over.
Holder also hit a six, off Mashrafe in the 42nd over, but Hope fell in the same over.
Mashrafe, bowling round the wicket to deny the right-hand batsmen leg-side hits, removed Holder in his following over, caught behind for 62, before Shakib accounted for Fabian Allen in the 45th over.
Mustafizur got his third and fourth wickets in the 49th over, first getting Ashley Nurse caught at the deep midwicket boundary before trapping debutant Raymon Reifer lbw off his penultimate ball.
© 2017 - All Rights with The Financial Express