South Africa, set a revised target of 176 in 29 overs, could only reach 104 for five off 21 overs when rain forced the teams off again and, with no more play possible, Sri Lanka were declared winners on the Duckworth-Lewis Method.
The hosts, who won the opening ODI by 180 runs, had earlier reached 223 for nine after winning the toss before the weather ended their innings with four balls remaining.
Tillakaratne Dilshan and Dinesh Chandimal top-scored with 43 apiece for Sri Lanka while Morne Morkel was the pick of the South Africa attack with figures of three for 34 off his 10 overs.
The players had been off the field for two hours by the time South Africa's revised target of 176 was announced, but that was not enough time for the tourists to get Hashim Amla back from a hospital where he had been having scans on groin and knee injuries suffered while fielding.
Amla was a late inclusion in the Proteas team having suffered muscle spasms in his neck in the lead-up to the game but the new injuries, suffered while trying to cut off a Chandimal boundary in the 43rd over, prevented him from opening the innings and he ended up not batting at all in South Africa's run chase.
Without the prolific batsman, South Africa struggled to build any momentum with Robin Peterson falling for three in the first over and JP Duminy (15), Alviro Petersen (24), AB de Villiers (12) and Faf du Plessis (eight) all being dismissed before 70 runs had been brought up.
David Miller (22 not out) and Ryan McLaren (14no) were attempting to lead a recovery but another downpour brought an early end to proceedings and South Africa were short of the score they needed to be at to win the match and level up the series.
The third match is in Pallekele on Friday.