South Africa 316-5 (50 overs) beat Kenya 140 (46.5 overs) by 176 runs
Opening batsman Herschelle Gibbs scored his eighth one-day century as South Africa joined Sri Lanka and Australia in the semi-finals.
Gibbs made 116 off 126 balls, including three sixes and 13 fours, as they became the first team in the tournament to go past 300.
Kenya were never in the hunt after losing their first two wickets with only five runs on the board but skipper Steve Tikolo enhanced his reputation with 69, his second half century of the competition.
He was eventually caught at deep mid-wicket off spinner Justin Ontong, who took three for 30 in his 10 overs.
Scorecard | Match report | Statistics
Spinner Jeremy Snape thinks he may have a few tricks up his sleeve to deal with India's top batsmen when England play a must-win Champions Trophy match on Sunday.
Snape was preferred to Test incumbent Ashley Giles for Wednesday's victory over Zimbawe because of his lower-order batting ability.
The Gloucestershire man is confident that despite a niggling rib injury he will be fit to play at the Premadasa Stadium in a play-off to decide who will go through to the semi-finals.
And he will use memories of last January in Madras, when he dismissed both openers Sachin Tendulkar and Virender Sehwag to set up an exciting finish, as a confidence boost.
"They are probably the best players of spin in the world - and they are used to these conditions," he said.
Captain Nasser Hussain believes England have a good chance of defeating India on Sunday to gain a place in the ICC Champions Trophy semi-finals.
But, after their opening 108-run victory over Zimbabwe, Hussain said his batsmen will have to become more accustomed to the hot, humid conditions in Sri Lanka.
"I am pleased, it was a very professional performance," he said after Zimbabwe were restricted to 190 for nine, chasing England's 298 under lights at the Premadasa Stadium on Wednesday.
"First up in these conditions to go and play so well ... If we play like that again we've got a good chance against India.
"We were probably 20 runs short through fatigue in the batting. We may have to make that up against India."
Skipper Shaun Pollock said today South Africa was ready to take on any team in the Champions Trophy limited-over cricket tournament, after sailing into the semifinals.
"We've got a good team and the boys are playing hard," Pollock said after South Africa steamrolled Kenya by 176 runs to win its preliminary group.
South Africa's opponent for Wednesday's semifinal will be decided by the clash on Sunday between India and England.
Australia and Sri Lanka have already set up the second semifinal, to be played next Friday.
Pollock said South Africa's team management will be following the match between India and England with keen interest, but he was not concerned with the result.
Brian Lara will be out of action for up to six weeks after doctors confirmed the West Indies star batsman has contracted hepatitis.
Lara has already been ruled out of the team's forthcoming tour of India after spending three days in hospital for Tests.
"Brian will leave for home at the earliest convenience," said West Indies team manager Ricky Skerritt.
However, Skerritt refused to answer questions on the possible cause of the illness, replying: "If I could say that, I would have put it in the statement."
And it was not made clear what type of hepatitis had been diagnosed, the illness varying massively in its severity.
Lara was taken to Colombo's Apollo Hospital after falling ill during an innings of 111 against Kenya on Tuesday.