Cape Town - Facing a massive target of 488 to win the first Test against the Proteas in Port Elizabeth, Sri Lanka provided stubborn resistance before losing two wickets just before tea to enter the break on 118/2.
Dimuth Karunaratne (43) and Kaushal Silva (48*) frustrated the home side, holding out for 32 overs before Karunaratne was run-out by JP Duminy after some hesitation between the pair.
Kusal Perera (6) joined Silva but didn't last long, edging a wide delivery from Keshav Maharaj to be caught behind by Quinton de Kock.
Earlier in the day, the Proteas had started the day with a lead of 432 as Faf du Plessis and Quinton de Kock picked up where they left off on Wednesday.
They batted for a little less than an hour before De Kock was out lbw for 69 to spinner Rangana Herath.
Du Plessis, 67*, called for the declaration immediately after.