Raina scored 110 not out from 104 balls after being dropped on 48 by Hamilton Masakadza to steer his side to six wins from six in the tournament as they chased down Zimbabwe’s total of 287.
MS Dhoni partnered Raina at the crease with a knock of 85no as the duo steadied the ship then piled on the runs after coming together when India were 92 for four.
Zimbabwe were all out in 48.5 overs and despite not being able to claim victory, Zimbabwe stand-in captain Brendan Taylor signed off his international career in style with his eighth ODI hundred.
The 29-year-old batsman has signed a three-year Kolpak deal with Nottinghamshire, during which he will be unavailable for international cricket.
Having notched 121 against Ireland in the last game, Taylor made it back-to-back centuries with a superb 138 from 110 balls including 15 fours and five sixes.
Taylor’s innings rescued his team, having found himself heading out to the middle in the fifth over with the score 13 for two after Masakadza (two) and Chamu Chibhabha (seven) had fallen cheaply.
Solomon Mire (nine) soon followed suit, prompting Sean Williams to join forces with Taylor. The pair shared a 93-run stand for the fourth wicket before Williams, having just brought up his fifty, was caught and bowled by Ravichandran Ashwin.
Taylor moved up a gear after Williams’ departure, plundering 25 runs off one Ravindra Jadeja over, but his innings ended in the 42nd over when he lofted a Mohit Sharma delivery to Shikhar Dhawan at mid-on. He left the field to a round of applause from the crowd and India’s players.
Craig Ervine (27) and Sikandar Raza (28) looked to keep the scoreboard ticking over in the final overs, but once they were dismissed the writing was on the wall as Tinashe Panyangara (six), Regis Chakabva (10) and Tendai Chatara (nought) did not hang around for long.
Mohammed Shami, Umesh Yadav and Mohit Sharma finished with three wickets apiece.
In reply, India stuttered to 21 for two after losing Rohit Sharma (16) and Shikhar Dhawan (four) both off the bowling of Panyangara.
Ajinkya Rahane was run out by Raza for 16 before Virat Kohli fell for 38 as India fell to 92 for four.
Raina was dropped on 48 by Masakadza when the match was finely-poised, with India needing another 130 runs with 15 overs remaining.
However, Raina and Dhoni kept the scoreboard ticking over, picking off the bad balls, with the latter firing his 57th one day international half century.
Raina capitalised on the dropped catch by going on to score his maiden World Cup century from 94 balls, ably supported by Dhoni, who hit the winning runs with a six over backward square.