South Africa completed a series victory over Sri Lanka with a 10-wicket win in the decisive third Test in Cape Town.
Sri Lanka resumed on 138 for four, still 203 runs behind having followed on, but were given hope when Thilan Samaraweera and Angelo Mathews batted through the fourth morning.
Their stand of 142 was ended when Mathews was trapped lbw for 63 by a Vernon Philander delivery which kept low and, although Samaraweera (115 not out) completed a second century in successive Tests, that wicket was the beginning of the end and they were bowled out for 342.
That left the hosts with just two to chase and, after tea was taken despite the meagre chase in prospect, Alviro Petersen returned to punch a Dhammika Prasad no-ball for four.
After a brisk start, Samaraweera survived a referral when Dale Steyn's caught-behind appeal was turned down, replays supporting the verdict that the ball came off the thigh pad alone.
The batsmen continued to make solid progress and Samaraweera steered Imran Tahir past the slips for two to reach a deserved half-century.
But he had a let-off when he set off for a run but was sent back by Mathews, and had given up on making his ground by the time Morne Morkel's throw from point flashed just past the stumps.
The hundred partnership came up when Samaraweera swept Tahir for four, before Mathews brought up his seventh Test half-century with a single to mid-wicket off Steyn.
Despite a couple of loose shots outside off stump, and Philander's vociferous lbw appeal against Mathews from the last ball before lunch, the pair survived to the interval.
The stand was a record for Sri Lanka's fifth wicket against South Africa, and another landmark arose when Samaraweera plundered 14 runs from the second over after lunch to reach 300 in the three-match series.
But Mathews was soon sent on his way for 63, after a futile referral, as Philander's short-pitched ball kept almost unplayably low and struck him in front of off stump.
New man Dinesh Chandimal made just one before fencing Philander to second slip where man of the match Jacques Kallis reacted superbly to take a good catch.
But Samaraweera reached three figures with a cut behind square off Tahir for his 13th boundary, from his 201st delivery.
His stand with Thisara Perera passed 50, and the team total reached 300 for six, courtesy of the wildest five wides imaginable from Steyn but Perera's contribution ended at 30 when he hoisted Tahir to Morkel at long-on.
Prasad almost went the same way but Morkel this time grassed the chance. Prasad continued to swing lustily, though, and when he advanced out of his ground against Tahir he was stumped by Mark Boucher for 16.
That brought last man Chanaka Welegedara to the wicket with his side still 14 in arrears, and he was fortunate to cut the deficit to 10 as Graeme Smith got a hand to his lofted drive.
But he then blazed Kallis for four over cover and then dumped him into the sightscreen to stave off a second innings defeat of the series - before losing his leg stump to leave the target at just two.
Samaraweera was stranded on 115 not out while Philander took three for 54, Jacques Kallis recorded figures of three for 35 despite Welegedara's onslaught and Imran Tahir bagged three for 106.
After the needless break, South Africa completed the shortest chase on record when Petersen drove an opening no-ball from Prasad for four, meaning the target was reached without a legitimate delivery being bowled.