Cape Town - The Proteas were disappointing with the bat on Tuesday morning, but they were looking dangerous with the ball as Sri Lanka went into lunch at 37/3 on day two of the first Test in Port Elizabeth.
Sri Lanka picked up four wickets in the opening 45 minutes of the first session as the Proteas were dismissed for 286.
But Kyle Abbott took two wickets and Vernon Philander one as the South Africans launched themselves right back into the Test.
Quinton De Kock and Vernon Philander had walked out to the middle at the start of the day with the score at 267/6.
LIVE: SA V SRI LANKA, DAY 2
But the first hour belonged to the visitors as they put the South Africans on the back foot in the Test match.
Philander (13) was first to go when he was caught on the deep square leg boundary trying to pull a short one from Nuwan Pradeep.
Keshav Maharaj was then out for 0 in the next over when he was caught behind to become Suranga Lakmal's fifth victim.
Lakmal's 5/63 are his best figures in Test cricket.
It became three wickets in three overs when poor calling from De Kock saw Abbott run out for 0 as the Proteas slumped to 281/9.
De Kock was the last man out when he was clean bowled by Pradeep as the Proteas crumbled in disappointing fashion.
But the Proteas bounced back, and Abbott had his first in the fourth over when he bowled Dimuth Karunaratne for 5.
Philander then had Kusal Perera caught behind for 7 before Abbott had his second when Kusal Mendis was also caught behind for 0.
At lunch, captain Angelo Mathews (5*) and opener Kaushal Silva (12*) were at the crease.
On day one a number of Proteas batsmen had threatened to go big, but none of JP Duminy, Stephen Cook, Dean Elgar or Faf du Plessis could convert their starts.
Scores in brief:
SA 286 (Duminy 63, Cook 59, Elgar 45, Du Plessis 37, De Kock 37, Lakmal 5/63)
Sri Lanka 37/3 (Abbott 2/13, Philander 1/9)
Sri Lanka trail by 249 runs with 7 first innings wickets in hand.