Kagiso Rabada sparked a dramatic England collapse as South Africa won by seven wickets to record a consolation win in the third one-day international at Lord's on Monday.
England slumped to 20 for six – the first time in an ODI that six wickets had gone down in the first five overs of an innings – after losing the toss.
Jonny Bairstow's fine fifty helped England recover to 153 all out.
But it never looked like being enough and South Africa finished on 156 for three, JP Duminy sealing victory with a four off David Willey.
England took the three-match series 2-1 but this was a morale-boosting success for the Proteas ahead of this week's start of the Champions Trophy -- a tournament featuring the world's top eight ODI nations.
Fast bowler Rabada took 4-12 in his first three overs on his way to 4-39 in nine.
New ball colleague Wayne Parnell took 3-43 in eight.
Lords is the best place to bowl with a white ball in England. Always a bit of movement. I know we're 32-6 but we've not done much wrong IMO!— Stuart Broad (@StuartBroad8) May 29, 2017
"There was something there for the bowlers today that all of us could capitalise," said Rabada.
"There was a bit in the wicket in the first 10 overs and a bit of a bounce, which bodes well for the Champions Trophy."
England coach Trevor Bayliss added: "We didn't play too well today but a 2-1 series over South Africa ... we'll take that every day.
Quick Single: Aussie warm-up ends in damp squib
"We probably didn't read the conditions as well as we could have done but credit to them on a wicket which had a little bit in.
"Today's result ensures we go into the Champions Trophy without big heads."
Bairstow apart, the only other England batsmen to make double figures were Willey (26) and number nine Toby Roland-Jones, who made an impressive 37 not out on his ODI debut, in a match played on the paceman's Middlesex home ground.
Hashim Amla (55) and Quinton de Kock (34) put on 95 for the first wicket but both openers fell on that total.
Amla became Roland-Jones's first ODI wicket when he bottom-edged a pull onto his stumps and, three balls later, de Kock was yorked by Jake Ball.
Quick Single: Amla breaks another ODI record
But Duminy (28 not out) and South Africa captain AB de Villiers (27 not out) wrapped things up in a match where only 60 overs out of a scheduled 100 were bowled.
The consolation for England was their inept batting display has come before the Champions Trophy, which they launch across London against Bangladesh at The Oval on Thursday.
An overcast morning and a green-tinged pitch meant it was no surprise when de Villiers opted to field first upon winning the toss.
"The stats show there's something in it for the first 15 overs," he said at the toss.
South Africa, however, only needed five overs to have England six down – the first time in ODI history that's been the case.
Rabada struck with just the fifth ball of the match when Jason Roy edged to Amla at first slip.
Next over, Joe Root (two) was lbw to a swinging delivery from left-armer Parnell.
England then lost their next two wickets on 15.
Quick Single: Stokes better for IPL stint, says Botham
Captain Eoin Morgan was caught behind off Parnell at the end of the fourth over.
Next ball Alex Hales, trying to drive Rabada, nicked to Amla.
It was the start of a brilliant over that yielded three wickets in five balls for Rabada.
His fifth ball that over saw Jos Buttler, going for a big drive, well caught by Faf du Plessis at second slip.
Next ball, England's 5-20 became 6-20 when Adil Rashid, even more recklessly, attempted a huge drive and edged to du Plessis for a golden duck.
England Test wicketkeeper Bairstow, recalled for this match in the absence of Ben Stokes, pressed his claims for a Champions Trophy place with a 67-ball innings featuring eight fours.
But he gave his wicket away when he charged at left-arm spinner Keshav Maharaj only to be stumped by de Kock.
England: Jason Roy, Alex Hales, Joe Root, Eoin Morgan (capt), Jos Buttler (wkt), Jonny Bairstow, Adil Rashid, David Willey, Toby Roland-Jones, Steven Finn, Jake Ball
South Africa: Quinton de Kock (wkt), Hashim Amla, Faf du Plessis, AB de Villiers (capt), David Miller, JP Duminy, Chris Morris, Wayne Parnell, Keshav Maharaj, Kagiso Rabada, Morne Morkel
Champions Trophy 2017 Guide
Squads: Every Champions Trophy squad
Group A: Australia, New Zealand, England, Bangladesh.
Group B: India, South Africa, Sri Lanka, Pakistan.
26 May – Australia d Sri Lanka by two wickets, The Oval
27 May – Bangladesh lost to Pakistan by two wickets, Edgbaston
28 May – India d New Zealand by 45 runs (D/L Method), The Oval
29 May – Australia v Pakistan, Edgbaston
30 May – New Zealand v Sri Lanka, Edgbaston
30 May – India v Bangladesh, The Oval
1 June – England v Bangladesh, The Oval (Day)
2 June – Australia v New Zealand, Edgbaston (D)
3 June – Sri Lanka v South Africa, The Oval (D)
4 June – India v Pakistan, Edgbaston (D)
5 June – Australia v Bangladesh, The Oval (D/N)
6 June – England v New Zealand, Cardiff (D)
7 June – Pakistan v South Africa, Edgbaston (D/N)
8 June – India v Sri Lanka, The Oval (D)
9 June – New Zealand v Bangladesh, Cardiff (D)
10 June – England v Australia, Edgbaston (D)
11 June – India v South Africa, The Oval (D)
12 June – Sri Lanka v Pakistan, Cardiff (D)
14 June – First semi-final (A1 v B2), Cardiff (D)
15 June – Second semi-final (A2 v B1), Edgbaston (D)
18 June – Final, The Oval (D)
19 June – Reserve day (D)