Colombo: Sri Lankan off-spinner Dilruwan Perera captured two wickets in three deliveries to spoil South Africa's recovery on the third morning of the second cricket test, holding the visitors to 163-5 at lunch on Saturday.
Resuming the day on 98-3, South Africa captain Hashim Amla and AB de Villiers added 52 runs before Perera trapped De Villiers lbw for 37. The off-spinner then bowled Quinton de Kock for 0 two deliveries later.
Perera had figures of 3-40 at the break.
Amla, unbeaten on 77 with JP Duminy (3), was again left to rebuild the South African innings.
Sri Lanka made 421 in its first innings, with Mahela Jayawardene top-scoring with 165.