South Africa, who were heading the Group B points table with four points from two straight wins, have now gone down to second position while England went up to lead the table with five points from four matches.
South Africa, set a seemingly modest 172 for victory, were bowled out for 165 as England, who only days earlier had been beaten by minnows Ireland, won with 14 balls to spare.
South Africa, set just 172 for victory, were bowled out for 165 as England, who only days earlier had been humbled by Ireland, won with 14 balls to spare.
Paceman Stuart Broad finished with four for 15 in 6.4 overs, ending the contest when he had Morne Morkel caught behind.
The Proteas lost four wickets for three runs to be 127 for seven having been in control at 75 for one as once again Graeme Smith's men appeared to choke on the big occasion.
Earlier, South Africa left-arm spinner Robin Peterson took three for 22, including two wickets in the first over of the match to dismiss England openers Andrew Strauss and Kevin Pietersen.
Ravi Bopara, recalled in place of the dropped Paul Collingwood, was named man-of-the-match after top-scoring with 60 in England's 171.
With 10 overs left, South Africa only needed 30 to win with three wickets remaining.
The eighth-wicket pair of Dale Steyn and Morne van Wyk got the target down to 12 before van Wyk (13) bottom-edged a cut off Tim Bresnan.
The Proteas then needed eight off three overs but Broad had Steyn lbw for 20 before removing Morkel.
From 124-3, South Africa lost three wickets with no addition to the total.
AB de Villiers (25) was bowled by a James Anderson delivery that just clipped the top of the stumps and then Faf du Plessis (17) was needlesly run out before JP Duminy was bowled by Anderson for nought.
Peterson fell cheaply when wicketkeeper Matt Prior caught him off left-arm spinner Michael Yardy for three.
Smith (22) and Hashim Amla (42) had enjoyed an opening stand of 63.
Off-spinner Graeme Swann had Smith caught behind after a lengthy review suggested the ball had brushed the left-handed opener's glove before Amla chopped on to Broad.
Broad gave England renewed hope when he had Jacques Kallis edging to Prior for 15, the batsman taking the fielder's word the ball had carried rather than requesting a review.
When England batted, Bopara, in at 15 for three, shared a fourth-wicket stand of 99 with South Africa born Jonathan Trott (52) that ultimately proved vital to the outcome.
Strauss fell for nought when he lofted Peterson only to be well caught by de Villiers, running in from deep midwicket.
South Africa-born Pietersen (two) has a history of getting out to left-arm spinners and, off the last ball of the opening over, he pushed forward to Peterson and Kallis made no mistake with the ankle-high slip catch.
Pakistan-born leg-spinner Imran Tahir took four for 38 to take his tally for the tournament to 11 from three matches.
Tags : England vs RSA, England vs South Africa, England vs South Africa world cup, England vs South Africa in world cup 2011, England vs South Africa what happened ?, England vs South Africa world cup 11 news, England vs South Africa world cup 2011 winner, England vs South Africa , who win the match between England vs South Africa in world cup 2011