South Africa 216 for 5 (McKenzie 80, Boucher 44*) beat India 215 (Ganguly 61, Dawson 4-49) by 5 wickets with 8 balls to spare
The least important match of the tournament produced the most excitement, but South Africa got over their early jitters and chased the target of 216 with five wickets and eight balls to spare. It avenged their humiliating loss to India earlier in the tournament, and set up the prospect of a fascinating final on Sunday.
It was the hottest day of the tournament, with temperatures reaching the mid-40s (Celsius), but South Africa put in a disciplined performance in the field after losing the toss to restrict India to 215. Then, they survived a collapse at the start of their innings to romp home with plenty to spare.
The hero of the day was Neil McKenzie. Coming to the crease with South Africa tottering at 42 for 3 and Harbhajan Singh on the rampage, he compiled two partnerships - 63 with Jacques Rudolph, and 107 with Mark Boucher - which snatched the match away from India. By the time McKenzie was out for an excellent 80, South Africa were just five short of victory.
South Africa's run-chase encountered early roadblocks, in the form of India's opening bowlers. Avishkar Salvi's disconcerting bounce and Ajit Agarkar's consistent line and awayswing asked plenty of questions of Graeme Smith and Herschelle Gibbs. Smith succumbed early, nicking a drive off Salvi to the wicketkeeper for 2 (11 for 1). Gibbs got a lucky escape when he edged a no-ball from Salvi to Virender Sehwag at slip, but the reprieve was shortlived.
Harbhajan came into the attack in the 12th over and struck twice in his first four balls. The second one sneaked between Boeta Dippenaar's bat and pad and knocked back the bails (41 for 2), while two balls later, Gibbs shouldered arms to an offspinner and was trapped plumb in front (42 for 2).
Rudolph and McKenzie began the fightback with a carefully constructed stand. Rudolph was especially impressive, with crisp drives down the ground and through cover. McKenzie, on the other hand, plonked his front foot outside off and swept whenever in doubt.
Sehwag ended the partnership when Rudolph (37) edged a flick to Mohammad Kaif at cover (105 for 4), but Boucher scotched any hopes of an Indian fightback. Both he and McKenzie consolidated with plenty of well-run singles, never allowing the asking rate to climb beyond six-and-a-half an over.
Then, when South Africa were sufficiently close to the target, McKenzie and Boucher (44 not out) stepped it up. The 41st over, bowled by Agarkar, went for 13, while Sehwag was tonked for 12 in the 43rd. The asking rate came down to under four-and-a-half, and from there the winner was never in doubt.
India's effort with the bat was characterised by plenty of batsmen getting starts, but apart from Ganguly - who top-scored with 61 - none of them topped 30. Mahkaya Ntini was the pick of the bowlers, bowling with plenty of hostility on a pitch which had a sprinkling of live grass, while Allan Dawson impressed with his clever change of pace.
In a scorching opening spell, Ntini first had Gambhir edging to Andrew Hall at first slip (7 for 1), and then dealt the Indian innings a huge blow, striking Sehwag on his right forearm with a wicked short delivery and forcing him to retire.
Ganguly was peppered by plenty of short stuff - especially by Ntini - but he responded in style, pulling Ntini for a couple of fours and cracking him through point when offered the width. His 64-run second-wicket stand with Kaif was the best phase of the Indian innings. Kaif ran the ones and twos with usual urgency, and laced a couple of gorgeous cover-drives when Dawson pitched it up.
Dawson got his revenge, though, when Kaif, inside-edged a slower ball onto his stumps for 30 (96 for 2). Ganguly kept the innings going, bringing up his half-century off 74 balls, and then tonking Adams over his head for the first six of the match.
A century seemed there for the taking, but Ganguly threw it away, hammering a full-toss from Adams straight down Shaun Pollock's throat at long-off (124 for 3). The Indian innings unravelled after that, as six wickets fell for just 68 runs.
Sehwag made a return to the crease at the fall of the fourth wicket after x-rays revealed no broken bones, and even managed a rousing front-foot six over point off Hall, but it was too good to last. Next ball, an attempted across-the-line short-arm jab took the top edge and presented Smith with a dolly (160 for 5).
Four wickets then fell in a heap, and it needed a 23-run last-wicket partnership for India to top 200. For a brief period, it seemed sufficient. Then, McKenzie got his act together.
S Rajesh is sub editor of Wisden.com in India.