The hosts elected to bat, but their innings was restricted by bad weather to 223/9 in 49.2 overs. The revised target for South Africa was 176 in 29 overs to equalize the series.
But in conditions where runs were at a premium, Lanka confined the Proteas to 104/5 in 21 overs - 17 runs less than the par score at that point - before the skies opened again.
South Africa were dealt a blow even before the chase when opener Hashim Amla was taken off the field after he injured his knee trying to stop a boundary at fine-leg during Sri Lanka's innings.
The pursuit was headed south from the get-go. Slinger Lasith Malinga bowled opener Robin Peterson (3) in the first over and then the spinners ran South Africa ragged.
Left-arm spinner Rangana Herath snared Alviro Petersen (24) and added Faf du Plessis (8) to his kitty just about the time that another spell of rain made its way the ground. JP Duminy was caught behind off Thisara Perera, while the dangerous AB de Villiers was despatched 'leg before' - after a review - by Tillakaratne Dilshan.
Rain had started to come down again and with the cut-off time approaching there was very little hope of a resumption once the players walked off.
Earlier, South Africa gave a much better account of themselves with the ball than they had during the carnage of the first ODI. Amla, who had sat out of the first game with a neck sprain, was in more trouble when he injured his knee trying to stop a boundary at fine leg in the 43rd over.
He was immediately taken off for a scan and played no more part in the match.
Sangakkara, who had starred in the last encounter with his highest ODI score, was early in the action after Sri Lanka elected to bat, when opener Upul Tharanga was caught trying to pull Morne Morkel.
Sangakkara looked in good touch and had six flowing boundaries in his 37. Although South Africa turned in a far tighter performance, they were still guilty of conceding 28 extras.
The Lankan veteran was the second wicket to fall when he went after left-arm spinner Aaron Phangiso and was taken at cover.
Mahela Jayawardene (17) and Dilshan added a painstaking 40 runs before the former was out attempting to reverse-sweep Robin Peterson. Soon after Dilshan ended his reverie by slashing at a Morkel wide ball and was caught behind sharply by de Villiers for a 64-ball 43.
Sri Lanka continued to lose wickets and it was only through stand-in skipper Dinesh Chandimal that the total attained some decent proportion. Chandimal survived the rain interruption and had four fours in his 51-ball 43, the knock terminating when he slashed Morkel to du Plessis at point for the fast bowler's third wicket of the match.