Proteas attack leaves Sri Lanka in a spin
South Africa's fielding proved the difference as they beat Sri Lanka by six wickets in an ICC World T20 warm-up tie.
The Proteas were clinical after winning the toss whereas dropped chances allowed Herschelle Gibbs to play a key role in the pursuit of 110.
Gibbs, who top-scored with 48, was put down twice in single figures and again in the teens as Kumar Sangakkara's side relinquished opportunities defending a small score on a slow pitch.
Farveez Maharoof afforded two escapes in the opening five overs - both coming after the departures of openers Graeme Smith and Jacques Kallis - as he failed to cling on to a vicious pull at square-leg and then bodged a skier running back from cover.
Tillakaratne Dilshan, Sri Lanka's best fielder, then floored a diving chance at short extra-cover off Sanath Jayasuriya with Gibbs on 15.
By the time he was given another life, on 37, when Chamara Silva made a fine attempt to clasp an opportunity at long-off, South Africa had broken the back of their chase.
That let-off in the 17th over came with the score on 83 for three and although he lost his leg-stump to paceman Lasith Malinga, his demise came with only 10 required from 13 balls.
Sri Lanka were able to take the contest to the final over after a vicious wag of the tail.
The Sri Lankans were reduced to 44 for seven by the halfway point of their innings and only a late-order rally allowed them to post 109 for nine.
Veteran opener Sanath Jayasuriya was harshly adjudged leg before to Dale Steyn in the third over of the innings but, instead of taking stock, Sri Lanka gambled to their cost.
Jehan Mubarak dropped the ball into the off-side and perished at the non-striker's end when Gibbs' dive and under-arm throw left him short later in the same over.
Kumar Sangakkara and Mahela Jayawardene were both undone by quicker deliveries from off-spinner Johan Botha either side of a spectacular one-handed catch by wicketkeeper Mark Boucher after Silva followed one from Jacques Kallis.
With their main men dismissed early, it took 28 and 24 not out respectively from lesser-known all-rounders Angelo Mathews and Nuwan Kulasekara to ensure Sri Lanka registered three figures.
Mathews departed in the final over when he skied a return catch to Albie Morkel but Kulasekara finished things in spectacular fashion with an aerial four through the leg side followed by an almighty six over extra-cover.