Chasing 256 runs from their allocation of 50 overs to win, India were dismissed for 236 in 48 overs to leave West Indies buoyant heading into next month's four-Test series.
Virender Sehwag hit nine fours and one six in the top score of 95 from 103 balls for India, but no other batsmen however, could pass 30, as West Indies bowlers throttled India down the stretch to clinch the victory.
Left-arm bowler Dave Mohammed was the pick of the West Indies bowlers with three wickets for 39 runs off nine overs, and Jerome Taylor supported with three for 48 from 10 overs.
Earlier, half-centuries from Dwayne Bravo, Ramnaresh Sarwan, and Chris Gayle ensured that India would chase the highest target total of the series, as West Indies, sent in to bat, reached 255 for six from their 50 overs.
Bravo, batting at five, gave the innings late momentum with a career-best, undefeated 62 from 44 balls that contained four boundaries.
Gayle gave West Indies an early push with 51 from 61 balls that included 10 fours, and Sarwan consolidated in the middle overs with one boundary in 52 from 97 deliveries.
Ajit Agarkar, a surprise omission from India's squad for the Tests that follow the ODIs, was the most successful bowler with two wickets for 44 runs from 10 overs.
Sehwag was the pick of the Indian bowlers however, with one for 29 from his allotment of 10 overs.
India were soon in trouble as their run-chase got underway when Robin Uthappa, playing his first match of the series, was caught behind off Wavell Hinds for a three-ball duck in the first over.
The visitors were further slowed down, when Hinds bowled Mahendra Dhoni, promoted to three, for 14 in the seventh over.
India's captain Rahul Dravid arrived and got things moving in a stand of 46 with Sehwag before he was run out for 18 when he failed to beat a direct hit at the striker's end from an alert Mohammed on his followthrough.
Yuvraj Singh came to the crease and put India back on track with Sehwag. They added 57 for the fourth wicket in the most significant partnership of the innings without taking many chances.
Mohammed bowled Yuvraj for 26 in the 23rd over to leave India on 130 for four, but Mohammed Kaif and Sehwag kept India ahead of the scoring rate until the 32nd over.
Kaif was caught at extra cover for 12 driving at Taylor, and Suresh Raina's departure in the 36th over, caught behind off the same bowler, did not help India's cause.
It was the dismissal of Sehwag, caught at extra cover off Taylor, in the 38th over that decisively swung the match West Indies' way, although there was a bit of rearguard from Harbhajan Singh with 26 and Ajit Agarkar with 21. Earlier, West Indies had suffered an immediate setback, when Agarkar bowled Sewnarine Chattergoon for a first-ball duck in the second over.
Sarwan came to the crease and with Gayle put the Indian bowling in perspective with a mixture of aggressive batting and running between the wickets.
The two added 90 for the second wicket and Gayle collected successive boundaries - the first, an authentic sweep; the second, a reverse sweep - off Sehwag to reach his 50, before he was bowled off the next delivery from the same bowler in the 20th over.
Brian Lara, probably making his final appearance in an international match on home soil, entered to tumultuous applause and consolidated West Indies' innings with a breezy 36.