It took South Africa just 70 minutes and 13.3 overs to claim the remaining five Sri Lankan wickets and take a 1-0 lead in the three-match series.
Sri Lanka were bowled out for 281. They added 41 runs on Friday.
Abbott broke through with the 16th ball of the final morning when Sri Lankan captain Angelo Mathews went across his stumps, trying to work the ball to leg, and was leg before wicket.
Mathews was out for 59, made off 120 balls with seven fours. He had added only one run to his score on Friday.
It left Dhananjaya de Silva as the last recognised batsman but he only last for another four overs before he too was leg before to Abbott. He made 22.
Rangana Herath, who was struck on the index finger of his left, bowling hand by the first ball he received from Abbott, made three before he was caught and bowled by Vernon Philander, who dived to his left to hold the ball which looped up from a leading edge.
Suranga Lakmal made a quick 19 not out but Dushmantha Chameera was caught behind off Kagiso Rabada and last man Nuwan Pradeep was bowled by left-arm spinner Keshav Maharaj.
Rabada finished with three for 77 and Maharaj took three for 86, while Abbott’s spell of two for seven in five overs on Friday enabled him to finish with two for 38.
Scores: South Africa 286 and 406-6 declared. Sri Lanka 205 and 281.
Series: South Africa lead the three-match series 1-0
Remaining matches:
January 2-6, Cape Town
January 12-16, Johannesburg