Cape Town: Kagiso Rabada claimed a six-wicket haul on Thursday as South Africa bowled Sri Lanka out for 224 in their second innings to win the second test by 282 runs with a day and a half to spare and take an unassailable 2-0 lead in the three-match series.
Sri Lanka failed to last the first session of the fourth day at Newlands, having resumed on 130-4 and being dismissed after just over 100 minutes of play.
They added 94 runs for their final six wickets to fold easily after being set a huge 507-run target on Wednesday.
Upul Tharanga was next to go as he swung the bat through a brief knock of 12 runs off seven balls, perishing when he got a bottom edge through to wicketkeeper Quinton de Kock.
Rabada, having taken two overnight, then claimed his fifth wicket of the innings, surprising captain Angelo Mathews with some extra bounce and finding the edge of the bat for De Kock to take another catch. Mathews went for 49, the top Sri Lankan score of the test.
Nuwan Pradeep was bowled by Vernon Philander to end the match, leaving Herath not out on 35.
South Africa dominated the test, save for the first session on the opening day, scoring 392 in their first innings with Dean Elgar and De Kock both getting centuries.
Philander and Rabada then took four wickets each as Sri Lanka were bowled out for 110 in reply but South Africa did not enforce the follow on, batting again instead and declaring midway through the third day on 224-7.
South Africa won the first test in Port Elizabeth by 206 runs and will be seeking a whitewash of the series in the third test at the Wanderers in Johannesburg from Jan. 12-16.