The match had to be reduced to 43 overs a side after a long spell of rain forced the start to be delayed.
Asked to bat first, a century by opener Ajinkya Rahane and half-centuries by skipper Virat Kohli and Shikhar Dhawan helped India post a challenging total of 310/5.
In reply, the hosts could only manage 205/6 in their allotted 43 overs.
India now lead the five-match series 1-0. The first ODI — which was also held at this very same venue — had to be abandoned due to heavy rain.
Shai Hope was the only West Indies batsman who showed some sort of application with 81 runs off 88 deliveries. But the rest of the West Indies batsmen were not really up to the task.
Left-arm spinner Kuldeep Yadav was the pick of the Indian bowlers with figures of 3/50.
Fast bowler Bhuvneshwar Kumar was exceptional, giving away only nine runs in his five overs while clinching two top order wickets.
The West Indies innings was doomed from the start with Bhuvneshwar getting Kieran Powell caught behind off the third ball of the opening over without a single run on the board.
The hosts into further trouble in the third over when Hardik Pandya pulled off an excellent catch at backward point to send back Jason Mohammed and hand Bhuvneshwar his second wicket.
The West Indies never really recovered from here. Their batsmen never really tried to force the pace and the required run rate steadily climbed up as a result.
The gap in standards between the two sides were too glaringly obvious. After a point, it seemed like the hosts were only going through the motions and their collective heart was not totally in it.
Earlier, India rode on a strong batting performance from the top-order to post a strong total.
Rahane spearheaded the Indian innings with 103 runs off 104 balls.
Kohli and Dhawan also scored breezy half-centuries to lay a strong foundation for the innings.
Kohli plundered 87 runs off 66 deliveries with four boundaries and an equal number of sixes.
Dhawan scored 63 runs off 59 balls.
Pacer Alzarri Joseph was the most successful among the West Indies bowlers with figures of 2/73.
The West Indies bowlers — specially the pacers — did themselves no favour by giving away as many as 13 extras which included five no-balls and four wides.
Ajinkya Rahane and Shikhar Dhawan put together an opening stand of 114 runs in 18.2 overs to give a Indians a solid start.
After Dhawan was stumped off the bowling of off-spinner Ashley Nurse, Kohli joined Rahane in the middle and the duo proceeded to continue the good work with a steady 97-run partnership.
Rahane completed his century in style, hitting pacer Miguel Cummins to the cover boundary.
The Mumbai was dismissed almost immediately after reaching three figures when he hit out at a Cummins delivery which was too close to the stumps and cramped him for room. The ball kissed the stumps and dislodged one of the bails on its way to wicket-keeper Shai Hope.
Rahane smashed 10 boundaries and two sixes during his stint at the crease.
The Indians lost a couple of quick wickets after that as the momentum of the innings seemed to be falling off a bit.
Hardik Pandya lasted all of five balls before offering a high outer edge off a Joseph delivery to Cummins at third man.
Yuvraj Singh looked in good touch during his nine-ball stay in the middle which produced 14 runs. But the veteran southpaw fell to a loose shot when he went after a widish delivery from Jason Holder only to offer the outside edge to Hope behind the stumps.
Kohli came up with a few big shots towards the end to give the Indian innings a rousing end. He was dismissed in the second last over of the innings when he holed out to long on while going for another big shot.
Holder typified the indisciplined effort by the West Indies bowlers when he gave away 20 runs in five balls in the last over. During that time, he gave away three boundaries and two no-balls.
He also bowled two dangerously high full tosses which prompted the umpire to pull him out of the attack and fellow pacer Jonathan Carter had to bowl the last ball which produced two runs — a total of 22 runs in the rather expensive over.
India: 310/5 in 43 overs (Ajinkya Rahane 103, Virat Kohli 87, Shikhar Dhawan 63; Alzarri Joseph 2/73 ) vs West Indies: 205/6 (Shai Hope 81; Kuldeep Yadav 3/50, Bhuvneshwar Kumar 2/9).