Kenya have made history by reaching the semi-finals of the 2003 World Cup. They will meet India in Durban thanks to their first-ever win over Zimbabwe in one-day internationals, and did it in emphatic style by seven wickets, after bowling them out for just 133. It means that Zimbabwe cannot progress further, even if they beat Sri Lanka in their last Super Six match on Saturday.

Although the win was punctuated by some dazzling strokeplay in the closing overs, Kenya had made an edgy start to the chase, with Ravindu Shah in particular living a charmed and fleeting life. He was dropped on four by Craig Wishart in the slips - a relatively straightforward chance - off Heath Streak. After surviving a confident shout for caught behind off Andy Blignaut - replays indicated a snick - he was missed again next ball, by the normally impeccable Dion Ebrahim at cover point, with a boundary resulting.

Shah's luck ran out in Blignaut's next over, when the bowler deflected a fierce drive from Kennedy Otieno on to the stumps with Shah, backing up, well out of his ground. A third chance went begging as Blignaut couldn't hold on to another strong return drive from Otieno. Steve Tikolo, woefully out of position as he tried to pull Blignaut, skied a catch to cover.

The introduction of Douglas Hondo hoisted Kenya's half century, as he gave Thomas Odoyo room on his legs. A long and eventful third over from Henry Olonga followed, as after bowling an alarming four no balls, he trapped Otieno plumb lbw back on his stumps. But Olonga no-balled again before Odoyo crashed him to the long-off and mid-wicket boundaries to tilt the balance back towards Kenya. Blignaut was welcomed back by Odoyo with four through long-on.

The destiny of the match became clear with six boundaries off as many balls, the first three hit off Blignaut by Odoyo, and the next three off Grant Flower, all struck through the off side by Maurice Odumbe. He profited further from the introduction of Douglas Marillier, who went straight for two more, before Odumbe finished it in style with an inside-out drive through extra cover.

When Zimbabwe batted first thing, the Kenyan bowlers, while lacking any real pace, were backed up by leonine fielding and found enough movement to ensure constant uncertainty amongst the batsmen on a pitch of limited purchase. Wishart was the first to go, caught behind driving at Martin Suji. The recalled Alistair Campbell, after being dropped at backward point, missed a ball from Suji that would have hit his middle and leg stumps.

Andy Flower, after announcing his international retirement, made a circumspect start. His brother Grant joined him on Campbell's departure, but soon tried to cut a ball from Suji that was too close for the shot, providing another thin edge for the keeper.

Suji was rested with the excellent figures of three for 19 off eight, and the introduction of leg-spin paid early dividends as Tatenda Taibu, promoted to number five, edged to Otieno as he tried to fend a turning ball to third man. Zimbabwe's travails continued when Ebrahim, down the wicket to Obuya, managed no semblance of a shot to present Otieno, 30 years old yesterday, with his fourth gift of the innings as he pulled off a smart stumping.

Flower took advantage of a rare loose ball from Obuya, going to his 50 with a cut to the backward point rope. But he lost Blignaut in farcical circumstances, changing his mind after calling for a sharp single to mid-wicket. Having second thoughts after the call, Flower turned tail back to his crease, narrowly beating the speechless Blignaut, who was summarily run out by Otieno at the bowler's end.

Streak lasted just four balls before he received a perfect leg spinner from Obuya, and when Flower was bowled off his thigh pad trying to work Odoyo to leg, Zimbabwe's plight was sorry indeed. Tikolo finished them off as first Olonga, checking a drive, was brilliantly caught by a diving Odumbe at mid-wicket, and then Marillier was bowled hitting across the line. Zimbabwe's total of 133 was to prove woefully inadequate.

So Kenya will meet India at Durban in one semi-final next Thursday, while the final berth - against Australia at Port Elizabeth on Tuesday - rests between New Zealand and Sri Lanka. If New Zealand beat India at Centurion on Friday they will be through, but if they lose, Sri Lanka could still get there provided they beat Zimbabwe on Saturday at Buffalo Park.