Colombo: Sri Lanka tightened the noose on South Africa on the third morning of the second Test, building a commanding lead of 451 while losing just a single wicket in the session.
Chasing their first series win since 2006 against South Africa, the hosts were on 237 for 4 at lunch after securing a 214-run first-innings lead in Colombo.
The visitors' only wicket was Dimuth Karunaratne for 85. Angelo Mathews made a 29th career half-century, going to lunch on 53 with Roshen Silva unbeaten on 19.
Fast bowler Lungi Ngidi had Karunaratne caught behind off a faint edge, but there was no joy for Dale Steyn who remains one wicket away from becoming the Proteas' leading Test bowler.
Steyn has been tied with South Africa great Shaun Pollock on 421 dismissals since the first Test last week in Galle.
Karunaratne's first four of the day was an edge through vacant first slip off Kagiso Rabada, but he was confident through the early overs, hitting Rabada repeatedly to the boundary while Mathews also warmed to his work.
The pair added 44 to the overnight score before Karunaratne fell just before drinks in sight of what would have been his second century of the series.
Having begun the day on 12, Mathews advanced steadily to his fifty without displaying the kind of urgency that would suggest a Sri Lanka declaration was imminent.
Silva, who has been out of form over the last four Tests, made a nervy start to his innings, playing and missing at several of the 50 deliveries he faced.
He did edge one ball off the bowling of Keshav Maharaj but it flew harmlessly through the vacant gully area.