A century from Shikhar Dhawan and four wickets for Jaydev Unadkat helped India to a 58-run victory in the second one-dayer against Zimbabwe, doubling their lead in the five-match series.
Opener Dhawan made the most of three lives to hit 116 and help the tourists recover from 65-4 to post 294-8, a total their opponents fell well short of as they finished on 236-9.
Dinesh Karthik weighed in with 69 from 74 deliveries for India, sharing in a fifth-wicket alliance worth 159 that repaired the damage after a top-order collapse at the Harare Sports Club.
Rohit Sharma and captain Virat Kohli (14) both fell in the opening 10 overs, the former being caught at slip off Brian Vitori's first ball when he had just one to his name.
Dhawan twice enjoyed reprieves in the opening powerplay, firstly when he was caught off a Kyle Jarvis no-ball before he was then dropped by wicketkeeper Brendan Taylor when he was on 14.
Vitori claimed his second victim when he had Ambati Rayadu caught for five, and the dismissal of Suresh Raina, caught behind off Tendai Chatara's bowling for four, left India in a spot of bother in the 17th over.
However, Karthik came out to the middle to share in a pivotal partnership with Dhawan, who was missed again in the field on 70 on his way to a third ODI ton.
Their stand eventually came to an end when Karthik was run out after a mix-up between the pair; Dhawan fell soon after for 116, playing on to Prosper Utseya having hit 11 fours and two sixes.
India still finished strongly; Vinay Kumar cracked an unbeaten 27 from 12 balls and Mohammed Shami hit the only ball he faced in the innings for six, making it 23 from the last over of the innings, bowled by left-arm spinner Sean Williams.
Zimbabwe made a confident enough start in their reply, at one stage reaching 109-1 thanks to a half-century from opener Vusi Sibanda.
But having already dismissed Sikandar Raza, Unadkat struck a crucial blow for the visitors when he had the well-set Sibanda caught at mid-wicket for 55.
Home captain Taylor was then run out for a duck as his team lost five wickets for 21 runs in the space of 61 balls.
Elton Chigumbura managed 46 and Utseya kept India out in the field until the very end with an unbeaten 52, though Zimbabwe still finished up a long way off their target.
The two teams continue the series at the same venue on Saturday.