After bundling out the home side for a paltry 103 runs, the Proteas raced to their target with six overs and nine wickets to spare to record their third successive T20 series win.
South Africa also took an unassailable 2-0 lead in the series with the third and final match to be played on Tuesday at the same venue.
South Africa’s run chase was spearheaded by wicket-keeper opening batsman Quinton de Kock, who smashed seven boundaries during his unbeaten 58.
Wanindu Hasaranga was the only successful bowler for Sri Lanka as he picked up the solitary wicket of Reeza Hendricks for 18.
Earlier, Sri Lanka put up a dismal batting performance and were bowled out for 103 runs after having elected to bat first.
The South African spinners wrecked the Sri Lankan batting line-up with a clinical performance as the home side were bowled out for their lowest T20 score while batting first at home.
Even then, at one stage it looked as if Sri Lanka would end up with a decent total as they reached 52 for two wickets inside the first powerplay overs.
Kusal Janith Perera, making a comeback after COVID-19, made his intentions clear and went after the bowling in search of quick runs despite the early dismissal of Dinesh Chandimal.
Bhanuka Rajapaksa also got his act together well from the start and hoisted Kagiso Rabada for a massive six and followed up with a magnificent boundary in back-to-back deliveries.
But after their departure, the Sri Lankan innings completely fell apart with the visitors gradually taking control of the situation through their spinners.
Off-spinner Aiden Markram returned career-best figures of three for 21 from his four overs while Tabraiz Shamsi also had excellent figures of three for 20 from four overs.