The wicketkeeper-batsman's first half-century in 12 matches on Thursday came at a time when India were struggling at 131-5 following left-arm fast bowler Ian Bradshaw's triple-strike in a Group 'A' league match.
Dhoni improvised brilliantly in the final overs, smashing two successive sixes off spinner Chris Gayle before being run out off the penultimate delivery of the innings. His late flourish saw India gather 42 in the last five overs.
The West Indies threatened to restrict India below the 200-mark when Bradshaw (3-30) grabbed three big wickets in his 10 disciplined overs, never allowing the hosts to build a big stand.
India began well after being put in to bat when hard-hitting Virender Sehwag and star batsman Sachin Tendulkar executed handsome shots, adding 22 for the opening wicket.
Jerome Taylor, who became the first West Indies bowler to grab a hat-trick in the previous match against Australia, provided the breakthrough when he trapped Sehwag (17) leg-before.
Bradshaw then put India under pressure when he bowled Irfan Pathan for nought and Tendulkar for 29, both the batsmen dragging the ball on to their stumps after mistiming their shots.
Skipper Rahul Dravid and Yuvraj Singh steadied the innings with a 61-run stand for the fourth wicket before being dismissed in the same over to leave their team struggling at 131-5.
Yuvraj (27) was caught off an uppish drive by Dwayne Bravo in the cover to become Bradshaw's third victim, while Dravid was run out following a mix-up with Dhoni when he was set to reach his first half-century in 11 matches.
The Indian skipper had been looking confident during his 67-ball knock before failing to beat Dwayne Smith's direct-throw to the striker's end. He struck six fours.
Both the teams won their opening matches, with India beating England by four wickets at Jaipur and the West Indies defeating world champions Australia by 10 runs at Mumbai.
Australia have one win and England none after two matches each. The top two sides qualify for the semi-finals.
Fall of wickets: 1-22 (Sehwag), 2-27 (Pathan), 3-69 (Tendulkar), 4-130 (Yuvraj), 5-131 (Dravid), 6-164 (Raina), 7-213 (Harbhajan), 8-223 (Dhoni), 9-223 (Agarkar)
Toss: West Indies
Umpires: Daryl Harper (AUS) and Aleem Dar (PAK), TV umpire: Simon Taufel (AUS)
Match referee: Mike Procter (RSA)