Robin Peterson routed the top order as Group B leaders South Africa added to England’s World Cup woes by dismissing their old rivals for just 171 at the Chidamabaram Stadium on Sunday.
Peterson took a career-best three for 22, including two in the first over of the match to get rid of England openers Andrew Strauss and Kevin Pietersen.
Leg-spinner Imran Tahir finished with four for 38 as South Africa belied their reputation for being overly reliant on fast bowling.
England, who badly wanted to win against the Proteas to get their quest for a quarter-final place back on track following their shock defeat by Ireland, lost their last six wickets for 37 runs.
And when Graeme Swann was last man out, there were still 26 balls of the innings left.
The unheralded Peterson dismissed Ian Bell to reduce England to 15 for three.
Ravi Bopara, recalled in place of the dropped Paul Collingwood, top-scored with 60 before he was lbw to fast bowler Morne Morkel.
Together with South Africa-born Jonathan Trott (52) he shared a fourth-wicket partnership of 99 in 25 overs.
No other England batsman made more than Swann’s 16.
Peterson said he was “pretty confident” South Africa could overhaul England’s total.
“I thought it (the pitch) would be quite nice and come onto the bat and I thought I’d need to change my pace a little bit more but it worked out nicely,” he added.
England captain Strauss, who won the toss, fell for a three-ball nought when he lofted Pietersen only to be well caught by AB de Villiers, running in from deep midwicket.
South Africa-born Pietersen has a history of getting out to left-arm spinners and, off the last ball of the over, he pushed forward to Peterson and Jacques Kallis made no mistake with the ankle-high slip catch.
Peterson’s sensational start continued when he dived to catch Bell (five) off his own bowling.
The spinner, whose best figures in his previous 42 one-day international career were three for 42, had taken three wickets for three runs in 16 balls.
Trott was caught and bowled by a diving Tahir to leave England 114 for four in the 30th over.
Bopara, who equalled his one-day best of 60 against India at Kanpur in 2008, was out to a Morkel ball that kept low.
A. Strauss c de Villiers b Peterson 0
K. Pietersen c Kallis b Peterson 2
J. Trott c and b Imran Tahir 52
I. Bell c and b Peterson 5
R. Bopara lbw b Morkel 60
M. Prior c van Wyk b Morkel 10
M. Yardy c Peterson b Imran Tahir 3
T. Bresnan lbw b Steyn 1
G. Swann c Duminy b Imran Tahir 16
S. Broad lbw b Imran Tahir 0
J. Anderson not out 2
Extras (b1, lb7, w12) 20
Total (all out, 45.4 overs) 171
Fall of wickets: 1-1 (Strauss), 2-3 (Pietersen), 3-15 (Bell), 4-115 (Trott), 5-134 (Prior), 6-148 (Bopara), 7-149 (Bresnan), 8-161 (Yardy), 9-161 (Broad), 10-171 (Swann)
Bowling: Peterson 8-2-22-3 (1w); Steyn 9-0-37-1 (1w); Morkel 7-0-16-2 (1w); Kallis 4-1-14-0 (1w); Imran Tahir 8.4-1-38-4 (1w); Du Plessis 5-0-16-0; Duminy 4-0-20-0 (1w)
South Africa: Graeme Smith (captain), Hashim Amla, Jacques Kallis, AB de Villiers, JP Duminy, Faf du Plessis, Morne van Wyk (wkt), Robin Peterson, Morne Morkel, Dale Steyn, Imran Tahir
Umpires: Simon Taufel (AUS) and Amish Saheba (IND)
TV umpire: Asoka de Silva (SRI)
Match referee: Jeff Crowe (NZL)