The morning session of day two of the opening Test against Sri Lanka belonged to the visitors as they took three wickets for 46 runs, before lunch at SuperSport Park in Centurion on Friday.
Jacques Kallis restored some dignity to the Proteas and together with AB de Villiers, took South Africa to 168 for four at lunch.
As Kallis was starting to look ominous, however, he received a blow to the side of his head when he ducked into a bouncer from Dilshan Fernando, which stayed lower than expected, and play was held up for seven minutes while he received attention on the field.
Kallis recovered but, shortly afterwards, was dropped by wicketkeeper Kaushal Silva, also off the bowling of Fernando, when he was on 27.
Resuming on 90/1 in their first innings, South Africa had reduced the deficit to 12 runs after the visitors had been bowled out for 180 before tea on the first day.
South Africa lost the early wicket of night-watchman Dale Steyn (0) after he nudged a ball from Chanaka Welegedara to the legside, where Rangana Herath did well to pick it up and shy at the stumps before Steyn could get back into his crease.
Hashim Alma (18) and Jacques Rudolph added 35 runs to the total before Amla got a thick edge to Thisara Perera which Angelo Mathews pouched, diving to his right at third slip.
Rudolph, who was dropped on 30, faced 140 balls for his 44 when he nicked Perera to Tharanga Paranavitana at first slip.
At lunch, Kallis was on 28 with AB de Villiers unbeaten on 10. — Sapa