South Africa’s Keshav Maharaj claimed a career-best eight for 116 to prevent Sri Lanka from making the most of a strong start and limiting them to 277 for nine on the opening day of the second and final test on Friday.
Akila Dananjaya was batting on 16 at stumps with Rangana Herath on five, with the hosts hoping for a 2-0 whitewash against a team they thumped inside three days in the first test at Galle.
Following their decision to bat first after winning the toss, openers Dimuth Karunaratne and Danushka Gunathilaka forged a century-plus stand, defying the South African bowlers in the wicketless morning session.
Karunaratne alone had outscored the entire South Africa team in Galle, and the southpaw continued his rich form to bring up his third successive 50-plus score in as many innings.
He and Gunathilaka put on 116 runs for the opening stand to lay the foundations for a big total, but Maharaj ensured the second session belonged to the tourists.
The 28-year-old got Karunaratne, who made 53, to tickle one down the leg side, with Quinton de Kock taking a smart catch behind the stumps.
In his next over, Maharaj dismissed Gunathilaka for 57 when the batsman attempted a slog-sweep and Kagiso Rabada charged from deep square leg and dived forward to take a brilliant catch.
Maharaj dealt a third blow before tea when he induced Kusal Mendis (21) into playing a sweep shot with Rabada taking his second catch of the day.
The spinner struck again in the first over after tea to dismiss Angelo Mathews for 10 and then ran through Sri Lanka’s middle and lower order.
Dhananjaya de Silva made 60 as each of Sri Lanka’s top three batsmen helped themselves to easy fifties before Maharaj wreaked havoc on those lower down the order.