Suresh Raina scored his maiden World Cup century as India had to overhaul Zimbabwe's 287 to finish Pool B unbeaten with a six-wicket win at Eden Park in Auckland.
Raina made an unbeaten 110 from 104 balls, after being dropped on 48 by Hamilton Masakadza at short fine-leg, to steer the defending champions to six wins from six in this tournament, and 10 straight at World Cups, as they chased down Zimbabwe's decent total with eight balls to spare.
Mahendra Singh Dhoni partnered Raina at the crease with a knock of 85 not out as the duo steadied the ship and then piled on the runs after coming together when India were 92 for four.
Most consecutive wins in WC matches: 25 Aus 1999-2011 10 India 2011-2015 9 WI 1975-1979.
— Test Match Special (@bbctms) March 14, 2015
In the last eight India will play Bangladesh at the Melbourne Cricket Ground on Thursday, a clash that would have featured England had they reached the quarter-finals.
Skipper Dhoni said: “Zimbabwe are a good side, but we were expected to win. The wicket really wasn't coming on nicely, and we didn't have enough pace to work with.
“Our lower order got a bit to bat. Raina is a key player for us at number five. The partnership between Raina and I was very good.”
Zimbabwe were all out in 48.5 overs and, despite not being able to claim victory, stand-in captain Brendan Taylor signed off his international career in style with his eighth one-day international hundred and second in two matches.
Taylor said:“We played some brilliant cricket, and have been shoddy at times.
“After 50 overs I would have taken 280, but the last four-five overs we should have got it up to 310-320.”
The 29-year-old batsman has signed a contract with Nottinghamshire, during which he will be unavailable for international cricket.
There are still two games to play in Pool B: http://t.co/zJ8FKv08Qe#CWC15#fireituppic.twitter.com/DxdipSbNyb
— Sky Sports Cricket (@SkyCricket) March 14, 2015
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 and Chamu Chibhabha had fallen cheaply.
Solomon Mire 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 a 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 and Sikandar Raza, with 27 and 28 respectively, 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, Regis Chakabva and Tendai Chatara fell in swift succession.
Mohammed Shami, Umesh Yadav and Mohit Sharma finished with three wickets apiece.
Suresh Raina is named as Player of the Match for his #INDvsZIM match winning century #CWC15#TwitterMirrorpic.twitter.com/ZsOqhReVcl
— ICC (@ICC) March 14, 2015
In reply, India stuttered to 21 for two after losing Rohit Sharma and Shikhar Dhawan, both off Panyangara.
Ajinkya Rahane was run out for 16 by Raza, who then bowled Virat Kohli round his legs for 38 as India slipped to 92 for four.
Raina was shelled by Masakadza when the match was finely-poised, with India needing another 130 runs with 15 overs remaining.
However, Raina and Dhoni decisively joined forces in a stand of 196, picking off the bad balls as the latter fired his 57th ODI half-century before hitting the winning runs with a six over backward square-leg.