Chasing a 264-run target, West Indies were cruising at one stage as they were 170 for two in the 36th over before their innings fell apart on a sluggish Ferozshah Kotla track.
India defended the total despite West Indies' early domination as opener Dwayne Smith hit a career-best 97. However, once Smith was dismissed Indian bowlers called the shots, causing a batting collapse.
From a comfortable 170 for two, the Caribbean side lost their last eight wickets for just 45 runs to be all out for 215 in 46.3 overs.
Electing to bat, India had posted a competitive 263 for seven as Suresh Raina hit a sparkling 62 while Virat Kohli (62) returned to form with his first half-century in eight months.
Also Read
Raina carried his splendid T20 form into the match and Kohli regained his lost touch partly at his home ground as the two batsmen added 105 runs for the fourth wicket after a sedate start by India.
In his trademark style, Dhoni hit a six and a four off paceman Jerome Taylor to complete his 56th half-century in the last over of the innings.
West Indies opener Smith missed out on his maiden ODI century by just three runs and his dismissal in the 36th over changed the complexion of the match.
The two teams will now travel to Visakhapatnam for the third ODI on Tuesday.