Having bowled out the hosts for 183, the target always looked within reach as Kohli's unbeaten 68 helped steer India to a seven-wicket victory with 14 overs to spare.
Earlier, Zimbabwe's batsmen had struggled to get going, although Hamilton Masakadza (38) and Sean Williams (45) rescued what could have been an embarrassingly low score.
However, spinner Amit Mishra caused the home side no end of problems in taking four wickets for 47.
Zimbabwe's troubles began after losing the toss, with the cheap dismissals of openers Vusi Sibanda (nought) and Sikandar Raza (one) leaving the home side on two for two.
Masakadza's third-wicket stand of 65 with skipper Brendan Taylor helped steady things until the latter lofted Jaydev Unadkat to Mohammed Shami at mid-off for 23.
Mishra's removal of Masakadza soon after spelled further trouble for Zimbabwe, who quickly found themselves teetering on 89 for six, but Williams played a sensible innings to dig them out of a hole once more.
It was a lapse of concentration which eventually ended the left-hander's stay at the crease when, just five runs short of a half-century, he decided to push for a second and was instead run out by a direct hit from Ravindra Jadeja.
Tendai Chatara then put up some late resistance with his knock of 23, but Mishra found his range to wrap up the tail and leave Zimbabwe's bowlers with work to do.
India's reply got off to a nervy start with Rohit Sharma the first wicket to fall to Michael Chinouya for just 14.
But Shikhar Dhawan (35) and Kohli soon got the runs ticking over with a partnership of 40, which was ended when Dhawan flicked a delivery from Chatara to Sibanda at cover.
Kohli was in no mood to capitulate, however, and quickly formed another productive stand with Ambati Rayudu which took India swiftly past the 100-run mark and took the captain within touching distance of his half-century.
Rayudu's departure for 33, caught and bowled by Brian Vitori, failed to knock Kohli off his stride and he passed the fifty mark, from 80 balls, with his fourth boundary.
There was only ever going to be one result now and it was Suresh Raina who wrapped things up, clattering another four to finish on 28 not out.