Set 229 to win, the visitors started their chase slowly but accelerated with captain Kohli at the crease. He raced to 115 off 108 balls before being caught at long on.
Kohli put on 159 for the third wicket with debutant Ambati Rayudu (63 not out) in India's total of 230 for four.
"The way I batted pleased me; the ball was doing a bit and it was about playing it out and playing percentage cricket," Kohli said.
"The ball did quite a bit in the morning and our bowlers put it in good areas, so we created a bit of pressure."
India won the toss and elected to bowl, but they might have regretted that decision when Zimbabwe put on 72 for the first wicket.
Pakistan-born opener Sikandar Raza struck a career-best 82 and Elton Chigumbura 43 not out as Zimbabwe reached 228 for seven. Leg spinner Amit Mishra was the pick of the Indian bowlers with three for 43 in his 10 overs.
"We could have been a little more proactive, instead of letting them just bowl at us and tie us down, I think we could have taken the game to them more," Zimbabwe skipper Brendan Taylor said.
"Against a quality side like India you have to post 270 plus, the wicket dried out nicely and it made it very difficult for us to defend."
The second game in the five-match series is at the same venue on Friday.
- Sports & Recreation