Chasing 224, the Windies were cruising towards victory at 212-4 but a dramatic late collapse saw them clinch victory by three wickets with just two balls to spare.
Ramnaresh Sarwan hit 53, Shiv Chanderpaul 51 and Runako Morton kept up the momentum with 45.
India were rescued by Mahendra Dhoni's late surge 51 in his side's 223-9.
Skipper Rahul Dravid (49) and Yuvraj Singh (27) earlier guided India away from another mini-crisis.
India needs to beat Australia on Sunday to progress, in a make-or-break match for both sides.
But the Windies were in grave danger of batting themselves to defeat with 14 balls left, sparked by the dismissal of Morton.
Agarkar trapped the right-hander infront with 12 runs left to get after putting on 92 with Sarwan.
Skipper Brian Lara, came in at number six to steer his ship safely home.
But after surviving one big appeal for lbw, and then stroking a sumptuous square cut for four, he dragged a delivery from Irfan Pathan onto his stumps for five.
Two deliveries later, and still needing six off the last seven balls, Sarwan saw Dravid drop a skier, only for the home skipper to fire in a throw for a run-out.
Windies needed five runs off the final over but with his first ball, Agarkar clean bowled Dwayne Smith to leave the visiting side on tenterhooks.
But wicket-keeper Carlton Baugh scrambled a single and Marlon Samuels smashed a four to clinch the win.
Chris Gayle got the Windies innings off to a flying start with a quick fire 34 off 37 balls before holing out to RP Singh in the deep mid-off off Munaf Patel in the 10th over.
Chanderpaul played second fiddle early on but took over as senior partner and combined with Bravo to add 57 before Bravo fell lbw to Harbhajan Singh.
The left-handed Chanderpaul lasted until the 17th over, facing 72 balls and hitting eight fours, when he edged a ball to Dravid at first slip off right-arm off-spinner Virender Sehwag.
This ushered in the exciting Morton to join Bravo and the Windies seemed set fair for a comfortable victory.
Earlier, Lara's decision to bowl first seemed vindicated when India lost opener Sehwag and Pathan quickly.
Sehwag was trapped lbw by Jerome Taylor for 17, while Ian Bradshaw forced Pathan to drag on to his stumps in the sixth over, leaving Sachin Tendulkar and Dravid to avert a crisis.
The pair steadied the ship for 10 overs, though Tendulkar survived a good lbw appeal from Smith in the 12th over.
But Bradshaw eventually removed the prolific right-hander, who dragged a wide delivery on to the stumps after facing 45 balls and hitting four fours.
Dravid and Yuvraj came together on 69-3 and put on 61 before Bravo pouched Yuvraj off Bradshaw with the first ball of the 31st over.
Five balls later, Dravid was run out by a sharp throw from Smith, leaving India reeling on 131-5.
Dhoni took his time to fire, taking 38 deliveries to reach double figure mark as Carlton Baugh stumped Suresh Raina off right-arm off-spinner Marlon Samuels for 19.
But Harbhajan came in and played the perfect foil as Dhoni began to unleash his fireworks.
Dhoni was run out in the penultimate ball of the innings.
For West Indies, Bradshaw took 3-30 off 10 overs, while Taylor took 2-33.