A superb spell of opening bowling from West Indian medium-pacer Dwayne Smith had India on the back-foot early as he took the wickets of Rahul Dravid, Virender Sehwag, Suresh Raina and Yuvraj Singh for a total of 12 runs, ending with figures of 31 for 4 from his 10 overs.
The only resistance in the Indian innings came from Sachin Tendulkar, who scored 65 from 102 balls before being run out in the unluckiest of circumstances, and Harbhajan Singh who tried to steady the ship with 37 off 60 deliveries.
The Indian total may have been higher if Tendulkar hadn't been run out when backing up at the non-striker's end only to see a Rudra Pratap Singh straight drive catch the finger of bowler Marlon Samuels and ricochet onto the stumps.
Needing to win to stay alive in the Champions Trophey warm up tri-series, the Indians had to protect a total of 162 which looked an unlikely task against a dangerous West Indies batting line-up.
However, after an opening stand of 44 between Shivnarine Chanderpaul and Runako Morton the Caribbean side had a collapse of their own losing their next 5 wickets for 39 runs to be 83 for 6 after 23 overs.
Skipper Brian Lara had demoted himself down the batting order to number nine, with regular opener Chris Gayle also batting out of place at number six in a move that backfired with the Windies eventually rolled for 146 off 41 overs.
Lara was left stranded not out on 40, while Harbhajan Singh took 3 wickets in a man-of-the-match performance to help India to an unlikely 16 run victory - their first one-day win since May.
The final round-robin match of the DLF Cup is on Friday in Kuala Lumpur, where India take on Australia for the right to play the West Indies in the final on Sunday.