Super Six, Bloemfontein: Kenya 135-3 (26 overs) beat Zimbabwe 133 all out (44.1 overs) by seven wickets
Kenya sensationally booked their place in the semi-finals after stunning Zimbabwe by seven wickets in Bloemfontein.
Regardless of the result of their next game against Australia, the World Cup surprise package will tackle India in Durban on 20 March with a final berth awaiting the winner.
Zimbabwe, however, are out of the running after dismal performances in both innings cemented their position at the bottom of the Super Six table.
Heath Streak's men could manage just 133 after batting first, despite Andy Flower's obdurate 63.
Martin Suji and Collins Obuya took three wickets each as just two of Flower's team-mates got into double figures.
The boys have been playing good cricket and this was no exception
Kenya captain Steve Tikolo
It was a target Kenya had no difficulty chasing, racing to victory in the 26th over on the back of swashbuckling knocks from Kennedy Otieno and Maurice Odumbe.
Odoyo and Odumbe punished Grant Flower at the end, finishing unbeaten on 43 (off 60 balls) and 38 (off 20 balls) respectively.
Zimbabwe's first wicket lasted just 13 deliveries after skipper Heath Streak won the toss and sent his side in.
In the first of three early strikes, Suji moved the ball off the seam to have the dangerous Craig Wishart caught by Otieno, one of five dismissals for the keeper.
Zimbabwe were 45 for three when Alastair Campbell was trapped leg before and Grant Flower was well caught behind the stumps.
Taitenda Taibu, who scored his first one-day fifty against New Zealand, was promoted to number five but toiled for 22 balls before leg-spinner Obuya removed him for three.
Obuya was at the core of the action again as Zimbabwe slumped to 97 for seven, with Ebrahim stumped and Streak caught in slip by Ravindu Shah.
Zimbabwe's farcical plight was typified by the comical run-out of Andy Blignaut, who scurried to make his ground at the striker's end already occupied by Flower.
Hope of a substantial total was then snuffed out when Flower was bowled around his legs by Thomas Odoyo.
Zimbabwe soon slumped to their lowest score against Kenya, falling comfortably below the 272 for six they had scored on two previous occasions.
On a slow pitch, they may have been quietly confident of restricting the non-Test playing Kenyans to under the paltry total.
That looked a possibility after they reduced Kenya to 62 for three after 17 overs.
But an unbroken 73-run stand between Odoyo and Odumbe, scored in just nine overs, pushed Kenya over the line in style.
Kenya's victory broke a run of 14 outs against Zimbabwe, and they will use their inconsequential match against Australia on 15 March as a fine-tuner for their semi-final showdown.
The clash is a repeat of the Super Six match between the two teams, which India won by six wickets.
Zimbabwe: Alistair Campbell, Craig Wishart, Dion Ebrahim,
Andy Flower, Grant Flower, Tatenda Taibu, Andy Blignaut, Heath
Streak (captain), Doug Marillier, Douglas Hondo, Henry Olonga.
Kenya: Kennedy Otieno, Ravindu Shah, Steve Tikolo (captain), Thomas Odoyo, Hitesh Modi, Maurice Odumbe, Collins Obuya, Tony Suji, Peter Ongondo, Martin Suji, Aasif Karim.
Umpires: Aleem Dar, S Venkataraghavan.