Opener Shikhar Dhawan took advantage of the three lives handed to him during the Indian innings as his 116 powered India to an imposing total in the second one-day international against Zimbabwe.

Dhawan was caught off a no-ball and then dropped twice on the way to his third one-day century, which helped India post 294 for eight after they were put in to bat by Zimbabwe captain Brendan Taylor.

Having won the toss and gained the right to bowl first in helpful conditions, Zimbabwe produced a ramshackle performance in the field and conceded 15 wides and eight no-balls in the innings.

Although Rohit Sharma and Virat Kohli were dismissed in the opening 10 overs, Dhawan led a charmed life as he was caught off a Kyle Jarvis no-ball and then dropped by wicketkeeper Brendan Taylor when he was on just 14.

Kohli's dismissal brought controversy - and will likely draw the attention of the match referee Chris Broad - after he twice disputed the legitimacy of Malcolm Waller's catch at mid-on.

Kohli was adamant that the ball had bounced in front of the fielder, but was given his marching orders after the on-field umpires twice checked upstairs.

With Brian Vitori dismissing Ambati Rayudu for five and Suresh Raina departing soon after, India slumped to 65 for four before Dhawan resurrected the innings in a 167-run partnership with Dinesh Karthik.

Dhawan was dropped again on 70 - this time by Waller - before going to his century in 115 deliveries.

Karthik was run-out for 69 after a mix-up with Dhawan, who perished in the next over when he played on off the bowling of offspinner Prosper Utseya.

However India finished strongly as R Vinay Kumar and Shami Ahmed took 23 runs from the final over, which was bowled by left-arm spinner Sean Williams.