Opener Stephen Cook scored an unbeaten century to help South Africa build a potential match-winning 302-run lead over Sri Lanka despite rain delays on the third day of the first Test at St George's Park in Port Elizabeth on Wednesday.
South Africa went to tea 221 for two wickets as they sought to put the game beyond Sri Lanka’s reach.
Cook reached his third test century off 152 balls and was 108 not out at tea, at the conclusion of an extended second session after lunch had been taken early following an unusual lightning storm.
Dean Elgar top-edged an attempted pull shot and was caught at mid-on off Suranga Lakmal in the first success for the visitors on a track supposed to favour the seamers but dominated by the home batsmen.
Elgar departed for 52 to end an opening partnership of 116 runs with Cook.
Hashim Amla, who has struggled with form in recent months, showed aggressive intent when he came to the crease but was trapped leg before wicket by Nuwan Pradeep with the last ball before tea, out for 48 runs off just 53 balls.
It was the 10,000th lbw decision in Test history.
Cook, who also got a half-century in the first innings, offered a chance to Dhananjaya de Silva at gully off Lakmal when he was on 62 but was dropped.
It was not a day to remember for Sri Lanka as earlier Vernon Philander completed a five-wicket haul in the opening over of the day to help dismiss Sri Lanka for 205, leaving them 81 runs adrift of South Africa’s first-innings score.
De Silva, who had stood resolute on the second day, failed to add to his overnight score of 43 when he was removed with the first ball of the day, edging Philander to wicketkeeper Quinton de Kock.
Lakmal was dismissed five balls later but Sri Lanka added 20 runs for their last wicket before Dushmantha Chameera was taken in the slips by Amla off Kyle Abbott’s bowling.