Diminutive left-arm spinner Rangana Herath took five wickets to lead Sri Lanka to their first Test win in South Africa on Thursday.
The touring side wrapped up victory by 208 runs just before the close on the fourth day of the second Test, bowling out the South Africans for 241 to level the series at 1-1.
It was Sri Lanka's first Test victory in South Africa in nine attempts and followed their defeat by an innings in the first match of the series at Centurion.
The hosts, chasing a record 450 for victory, collapsed dismally after lunch, slumping to 133 for six before AB de Villiers and Dale Steyn resisted for two-and-a-quarter hours.
Herath was the inspiration for Sri Lanka, taking five for 79 in 30.3 overs to give him nine wickets in the Test and the man-of-the-match award.
Fast bowler Dilhara Fernando completed figures of two for 39.