Jasprit Bumrah returned to India's ODI side, and immediately created an impact by accounting for both Windies openers.
Khaleel Ahmed was expensive early on but came back strong with the wicket of Marlon Samuels.
Shai Hope's seventh ODI fifty kept Windies on track.
Shimron Hetmyer and Hope shared a commanding 56-run stand for the fourth wicket, where they ran the Indian spinners ragged.
While Hetmyer fell to Kuldeep Yadav, Hope's superb innings was ended on 95 by a searing Bumrah yorker. Ashley Nurse's 22-ball 40 parried Windies to 283/9 in 50 overs.
India weren't off to the greatest of starts in the 284-run chase. Rohit Sharma fell in the second over of the innings to Jason Holder whereas Shikhar Dhawan perished to Ashley Nurse's off-spin once again.
Virat Kohli scored yet another half-century, his 49th in ODIs, as wickets fell at the other end. Ambati Rayudu and Rishabh Pant managed 20-odds whereas Dhoni fell for 7.
With Bhuvneshwar Kumar for company, Kohli racked up his 38th ODI hundred.
Marlon Samuels's wicket of Virat Kohli in his first over was the game-changer and marked the middle of a collapse that saw India lose their last seven wickets for 68 runs.
This was the first time India lost a home run-chase when Virat Kohli's hit a hundred. Windies levelled the series as a result of this 43-run win in Pune.