Second ODI, Colombo: Sri Lanka 231-9 beat South Africa 176 by 37 runs
Zoysa's 5-26 was his best against South Africa
Sri Lanka beat South Africa by 37 runs in the second one-day international in Colombo on Sunday.
Sri Lanka made 213-9 in their 50 overs and bowled South Africa out for 176 to take a 2-0 lead in the five-match series.
At 86-5, the hosts looked in trouble but Kumar Sangakkara (63) and Upul Chandana (61 not out) put on a record 93 for the sixth wicket.
In reply, Shaun Pollock hit 54 but Nuwan Zoysa took 5-26 to seal victory.
Sri Lanka won the toss and had Sangakkara and Chandana to thank for posting a competitive target.
Chandana, who hit a patient 61 off 91 balls, played despite being the victim of a road rage attack a day earlier.
After Sangakkara departed it triggered a lower order collapse in the final overs with Jacques Kallis picking up two late wickets on his way to figures of 3-19 off six overs.
In reply, South Africa got off to an awful start when Herschelle Gibbs was bowled by Zoysa for seven and they slumped to 94-7.
Veterans Pollock and Lance Klusener then put on 61 for the eighth wicket but Tillakaratne Dilshan polished off the lower order, finishing with figures of 4-52, his best performance in one-day internationals.
A delighted Sri Lanka Marvan Atapattu said afterwards: "We are not doing too badly at the moment and I hope that will continue.
"We had a plan going onto the field and that worked. To get five wickets on a pitch like that was extra special."
South Africa captain Graeme Smith said his side should have got the target.
He said: "We were superb in the field today and bowled well at the death and 213 was a score that we should have got."
Sri Lanka: M Atapattu (Capt), M Jayawardene, S Jayasuriya, K Sangakkara (Wkt), T Dilshan, A Gunawardene, R Herath, C Vaas, U Chandana, N Zoysa, K Lokuarachchi.
South Africa: G Smith (Capt), M Boucher (Wkt), H Gibbs, J Kallis, J Rudolph, L Klusener, S Pollock, N Boje, A Dawson, JP Duminy, M Ntini.