Batting first, Sri Lanka were bundled out for 103 in 18.1 overs. In reply, South Africa notched up the required total for the loss of one wicket with 35 balls remaining.
Looking to restore parity in the series, Sri Lanka opted to bat first. Praveen Jayawickrama was handed his T20I debut while Kusal Perera returned to the playing XI for the first time since he suffered a shoulder sprain ahead of the series against India. For South Africa, Rassie van der Dussen was drafted into the team in David Miller's place.
In their bid to score quick runs early on in the innings, Dinesh Chandimal mistimed his pull to mid-on and fell to Anrich Nortje in the second over. A couple of rain interruptions later, Aiden Markram brought an end to Bhanuka Rajapaksa's quick-fire innings with a sharp caught and bowled.
However, Kagiso Rabada's two overs in the Powerplay fetched Sri Lanka 29 runs and helped release the pressure building up from the wickets. Despite losing two wickets in the first six overs, the hosts went at almost nine runs per over to put up 52 runs.
Spin at both ends helped South Africa put the brakes on the scoring. The No.1 ranked T20I bowler, Tabraiz Shamsi, struck twice in two overs to dismiss Dhananjaya de Silva and Dasun Shanaka. Markram trapped Perera plumb in front of the stumps in the 11th over as half the Sri Lankan side were back in the dressing room for 78.
Bjorn Fortuin got in on the act and rattled Wanindu Hasaranga's with the arm-ball. In his final over, Shamsi scalped his third of the innings with a delivery that grazed the inside edge of Chamika Karunaratne's bat onto the stumps.
Sri Lanka lost their final three wickets in a span of eight balls and were bowled out for just 103 after being 52/2 at one point.
In reply, South Africa had a blistering start, with Quinton de Kock playing the role of an aggressor. Reeza Hendricks on the other hand was happy to rotate the strike. The wicketkeeper-batsman looked in sublime touch, playing some fine shots.
The pair soon brought up their 50-run partnership, as the Proteas were cruising home to a comfortable victory. But Wanindu Hasaranga struck for the hosts, breaking the 62-run stand by notching the scalp of Hendricks for 18. Soon after, rain interrupted the proceedings with South Africa requiring 39 runs in 66 deliveries.
After the re-start, de Kock joined by Aiden Markram made easy work of the chase, as the former brought up his half-century. They sealed the victory with nine wickets in hand, to take an unassailable 2-0 lead in the series.
Brief scores: Sri Lanka 103 in 18.1 overs (K Perera 30; A Markram 3/21, T Shamsi 3/20) lost to South Africa 105/1 in 14.1 overs (Q de Kock 58 not out, A Markram 21 not out) by 9 wickets.