England slumped to 20 for six in five overs after losing the toss before recovering to 153 all out.
Fast bowler Rabada took four wickets for 12 runs in his first three overs, before eventually finishing with four for 39 in nine.
New ball colleague Wayne Parnell took three for 43 in eight.
Jonny Bairstow, recalled for this match, kept the Proteas at bay with a fine 51.
His was one of just three double-figure scores by batsmen in the innings, with David Willey (26) and number nine Toby Roland-Jones, who made an impressive 37 not out on his ODI debut, helping the Yorkshireman compile stands of 62 and 52 respectively.
Left-arm spinner Maharaj took three for 25 in 6.1 overs.
The consolations for England were that they were already an unassailable 2-0 up in this three-match series and that the collapse had not come during the Champions Trophy ODI tournament, which they launch across London with a match against Bangladesh at The Oval on Thursday.
An overcast morning and a green-tinged pitch meant it was no surprise when South Africa captain AB de Villiers opted to field first upon winning the toss.
As it turned out, the Proteas only needed a mere five overs to have England six down.
The fifth ball of the match saw Rabada strike when Jason Roy edged a good length ball to Hashim Amla at first slip.
Next over, Joe Root (two) was lbw to a swinging delivery from left-armer Parnbell
England then lost their next two wickets on 15.
Eoin Morgan, the England captain, fell for eight on his Middlesex home ground, was caught behind off Parnell for eight.
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 20 for five became 20 for six when Adil Rashid, even more recklessly, attempted a huge drive and edged to du Plessis for a golden duck.
Bairstow, England's Test wicket-keeper who many believe should be in England's first-choice ODI side purely as a batsman, stopped the rot.
Bairstow received good support from Yorkshire team- mate Willey before the all-rounder was caught drove Parnell to cover.
Bairstow then gave his wicket away when he charged at Maharaj only to be stumped by de Kock to end a 67-ball knock featuring eight fours.
Roland-Jones struck five fours but the damage had long since been done.
Disclaimer: No Business Standard Journalist was involved in creation of this content
