Mustafizur Rahman and Mashrafe Mortaza shared seven wickets between themselves to restrict West Indies to 247-9 and later reached 248-5 in 47.2 overs on the back of Soumya Sarkar and Mushfiqur Rahim half-century.
Soumya and Tamim (21) put 54 runs in their opening stand to give a perfect start before the latter was bowled by Ashley Nurse, the most successful bowler of the opponent camp with 3-53.
Soumya (54) added another 52 runs with Shakib al Hasan (29) before both of them departed in the same over bowled by Nurse.
Mushfiqur and Mohammad Mithun (43) resurrected the innings through adding 83 runs to help them lay the platform for their win that was well supported by the sloppy fielding of the West Indians.
Mithun looked all set for a well-deserved half-century but failed to do so after Jason Holder bowled him through the gates.
Mushfiqur played sensibly to score his 33rd ODI half-century and in the process took his side over the line for a final against the same opponent on May 17.
Mushfiqur made highest 63 runs from 73 balls with five fours and a six to help Tigers earn a spot in the final with one match in hand.
Shai Hope anchored West Indies' innings with a 108-ball 87 and Jason Holder cracked an enterprising fifty to propel the side to 247 for 9 in their quota of 50 overs in the Dublin ODI versus Bangladesh.
The Caribbean side, who opted to bat, were in a spot of bother losing four wickets for just 99 runs. However, Holder and Hope lifted the West Indies' spirits with a stand of hundred for the fifth wicket. At 199 for 5 in the 42nd over, West Indies looked set to end up with a sizeable total. At that stage, Mortaza, the Bangladesh skipper, struck twice to remove both Hope and Holder in quick succession.
The duo of Mustafizur and Shakib Al Hasan then took over to plot West Indies' downfall by picking up three scalps between them. Among West Indies' lower order batsmen, only Ashley Nurse reached double figures. Mustafizur returned with impressive figures of 4-43. On the other hand, Mortaza picked up three scalps but conceded 60 runs.
Bangladesh will face Ireland on the last match of the group stage on 15th May.