Durban: Sri Lanka moved within sight of an historic win as South Africa lost five wickets between lunch and tea on the fourth day of the second Test at Kingsmead on Thursday.
Set to make 450 to win, South Africa were 136 for six at tea, a distant 314 runs short of the target.
South Africa's problems started when fast bowler Dilhara Fernando dismissed South African captain Graeme Smith for 26, surprised by a ball which lifted sharply for him to be caught at first slip off the shoulder of his bat.
Hashim Amla and Jacques Rudolph stabilised the innings with a second wicket stand of 51 but the match swung dramatically in Sri Lanka's favour in the first over after lunch when Rudolph fell to a spectactular diving catch at second slip by Mahela Jayawardene off Thisara Perera.
Jacques Kallis completed his first 'pair' in 149 Tests when he was caught at short leg off left-arm spinner Rangana Herath when he attempted a sweep, the ball skidding off a top edge onto his helmet and then up in the air to present Tharanga Paranavitana with an easy catch.
Sri Lanka's chances of winning a Test in South Africa for the first time - and achieving their first Test win of the year - soared when Amla, after making a fluent 51, drove Herath to Chanaka Welegedera at mid-on and set off for a suicidal run.
Batting partner Ashwell Prince did not respond and Amla was given out when both batsmen found themselves at the wrong end when the wicket was broken.
The out-of-form Prince fell to another lifting delivery from Fernando, caught at first slip, and a miserable afternoon for the hosts was completed when Herath trapped Mark Boucher leg before wicket, leaving AB de Villiers, on 17, as the last recognised batsman.
Sri Lanka were all out for 279 in their second innings earlier in the day, losing their last three wickets for 23 runs. Two of the wickets fell to fast bowler Dale Steyn, who took five for 73. It was his 17th five-wicket haul in Tests.