Wicketkeeper Sanju Samson struck an unbeaten 43 to guide India to a five-wicket victory on Saturday and a series win after the second of three one-day internationals in Harare.
Zimbabwe made a modest 161 after losing the toss and India recovered from losing skipper KL Rahul leg before for one to reach 167-5 with 146 balls remaining.
The result relegates the third match on Monday to a dead rubber, but Zimbabwe will be encouraged after putting up a much better show than two days ago, when they suffered a 10-wicket hiding.
Batting at number six, Samson faced 39 deliveries over 51 minutes and smashed four sixes and three fours.
Opener Shikhar Dhawan and fellow top-order batsman Shubman Gill contributed 33 runs each as India recovered from 5-1 to eventually finish comfortable winners.
Vice-captain Dhawan struck four fours in a brisk innings while the more cautious Gill notched six fours.
PAY ATTENTION: Join Legit.ng Telegram channel! Never miss important updates!
Luke Jongwe was the most successful Zimbabwe bowler, taking the wickets of Gill and Ishan Kishan for the loss of 33 runs in four overs.
The unbeaten 43 and three catches earned Samson the player of the match award and the wicketkeeper said he enjoyed his time in front of the stumps.
"I took three catches but I missed a stumping -- as wicketkeepers we are used to being told about things we did not do well," he said.
"I really enjoy wicketkeeping and contributing to this win. In this match the fast bowlers picked the length much quicker and I really enjoyed that.
Rahul said: "We bat deep and it is good for some of the guys to get time in the middle. We were not nervous despite my early, cheap dismissal.
"I wanted to get some runs but it did not happen. Hopefully in the next game I will be more successful.
"The Zimbabwe bowlers came hard at us, they are big, tall, strong boys, and created a good challenge for us batters."
India won the toss, chose to field for the second successive match and Shardul Thakur took three wickets as India bowled Zimbabwe out in 38.1 overs.
The medium-fast bowler replaced Deepak Chahar in the only change from the team that won the first match by 10 wickets.
Rahul did not reveal the reason for leaving out Chahar, who had taken three wickets on Thursday and won the player of the match award.
Thakur, known as the Paighar Express after the town north of Mumbai where he was born, captured the wickets of opener Innocent Kaia, captain Regis Chakabva and Jongwe.
The prized wicket of Sikandar Raza, who hit two centuries in a ODI series victory over Bangladesh this month, fell to Kuldeep Yadav after the Pakistan-born batsman scored 16.
Only former Zimbabwe captain Sean Williams and unbeaten Ryan Burl made any impact against the Indian attack, hitting 42 and 39 respectively.
Williams averaged a run a ball in his stand, compiling his total off 42 deliveries, including a six and three fours.
Burl was slightly slower, facing 47 balls, but also struck a six and three fours at Harare Sports Club.
India rested several stars, including batsmen Virat Kohli and Rohit Sharma, for a first visit to the southern Africa nation since 2016.
Head coach Rahul Dravid also took a break after recent trips to England and the West Indies with VVS Laxman taking charge for the Harare series.
India are preparing for the Asia Cup in the United Arab Emirates this month, with their opening fixture against arch rivals Pakistan on August 28.