Malan, playing in place of fellow Middlesex left-hander Morgan, made 78 in a total of 181 of eight after England were sent into bat by South Africa captain AB de Villiers.
South Africa then collapsed to 86 for five, with leg-spinner Mason Crane taking the prize scalp of de Villiers (35) for his first wicket at this level.
England vs South Africa, 3rd T20I: As It Happened
They rarely threatened England's total, despite some big-hitting late on from Mangaliso Mosehle (36) and Andile Phehlukwayo (27 not out).
The Proteas' fate was effectively sealed when Tom Curran, in just his second match at this level, conceded just seven runs off the penultimate over on his way to two for 22.
Man-of-the-match Malan's impressive 44-ball innings featuring 12 fours and two sixes, surpassed the 46 made by Paul Collingwood in England's very first match at this level — a 100-run win over Australia at Southampton in 2005.
"It was awesome. I definitely wasn't expecting that," Malan told Sky Sports at the innings break.
"It's always nice to contribute and get a score under your belt.
"My legs were shaking first ball so I got the old school leave out, then I tried to do what I do best."
Alex Hales and Malan shared a second-wicket stand of 105 in 10.3 overs.
But from 166 for three, England lost their next five wickets for 14 runs.
Dane Paterson, who was twice on a hat-trick, led South Africa's attack with four for 32.
Jason Roy, dropped on nought, fell for eight when caught behind trying to ramp fast bowler Morne Morkel. His exit brought in Malan.
Born in London but brought up in South Africa, Malan got off the mark in style by pulling Morris for six over midwicket.
Meanwhile Hales suffered a painful blow on eight when he bottom edged a pull off paceman Paterson onto an unprotected knee.
Hales should have been out on 10 when he mistimed a drive off Morris only for Phehlukwayo to make a complete hash of a routine catch, with England 49 for one in the seventh over.
Meanwhile Malan kept the runs coming, the 29-year-old driving fast bowler Morkel straight back over his head for a six that soared out of the ground and into the River Taff.
But he also showed touch as well as power in flipping leg-spinner Imran Tahir over short fine leg for a four that saw him to fifty.
The stand was broken when Hales (36) holed out to deep midwicket where David Miller took a good catch and Malan fell soon afterwards caught at long-on off Tahir.
England's innings then petered out as Paterson helped himself to some cheap wicket.
Durban-born paceman Curran, carrying on from where he left off on debut in a three-run defeat at Taunton on Friday, dismissed Reeza Hendricks for a duck.
De Villiers, in his last match of the tour -- he is not staying on for the Test leg as he takes a break from the demands of playing all three international formats -- looked in good touch as he twice hoisted Crane for legside sixes in the 11th over.
But the last ball of that over saw him fail to get enough height and the tall Hales take a well-judged catch on the boundary edge.
And when the dangerous Miller was caught behind down the legside by stand-in captain Jos Buttler off Jordan, the Proteas were 86 for five in the 12th over.
Alex Haleschris jordanDane PatersonDawid MalanEngland Beat South AfricaEngland vs South Africa 2017england-south africaeoin morgantom curran
First Published: June 25, 2017, 10:43 PM IST