Shikhar Dhawan scored his third one-day international century as India beat Zimbabwe by 58 runs in Harare to take a 2-0 lead in their five-match series.
Dhawan (116) and Dinesh Khartick (69) put together a fifth-wicket stand of 163 to guide India out of some early trouble and towards a total of 294-8.
Zimbabwe made a strong start to their reply, with opener Vusi Sabanda scoring 55 but his departure sparked a middle-order batting collapse.
From the strong foundation of 109-1 after 20 overs, Zimbabwe crashed to 133-6, losing five wickets for just 24 runs in 10.1 overs and there was no way back.
Prosper Utseya scored an unbeaten 52 and Elton Chigumbura hit 46 to restore some respectability but Zimbabwe were restricted to 236-9 in their reply.
Jaydev Unadkat was the pick of the bowlers, taking 4-41 including opener Sikandar Raza for 20 and the catalyst wicket of Sibanda.
Zimbabwe, having won the toss, also made a strong start with the ball and reduced India to 65-4 inside 17 overs. Opener Rohit Sharma fell to Brian Vitori’s first ball, before Virat Kohli joined him.
Kohli, who had scored a match-winning century in the first international of the five-match series, was caught low at mid-on by Malcolm Waller off Kyle Jarvis.
When Ambati Rayadu fell to Vitori for five and Suresh Raina was caught behind off Tendai Chatara for four, India were in trouble.
But Dhawan remained solid to score his third and biggest one-day international century of the year, striking 11 fours and two sixes in a 127-ball 116.
Karthick stayed with Dhawan for nearly 26 overs. By the time he was run out for 69, India had progressed to a commanding 232-5.
Dhawan fell soon after but India accelerated from that platform in the final overs.
Sibanda set a good early pace for Zimbabwe, hitting seven fours and two sixes to reach 55 before he was caught by Amit Mishra, giving Unadkat his second wicket.
From there, Zimbabwe collapsed. Brendan Taylor was run-out without scoring and Sean Williams was trapped lbw by Ravindra Jadeja for five.