Sri Lanka need 197 runs in their second innings to secure a first ever series victory against the Proteas in Port Elizabeth.
A poor batting display by the Proteas which saw the home side bowled out for 128 in their second innings swung the momentum back in Sri Lanka’s favour.
Sri Lanka was 60 for two at the close, needing 137 more runs to win. Sri Lanka resumed day two on 60 for three. They slumped to 65 for five after Duanne Olivier and Kagiso Rabada got two quick wickets early on.
Olivier took a good return catch to dismiss Lahiru Thurimane while Rabada disposed of Kasun Rajitha.
Sri Lanka launched a fightback with Kusal Perera scoring a quick-fire 20 runs.
But his good spell was short-lived when Rabada struck again dismissing the left-hander.
Wiaan Mulder got his maiden test wicket dismissing Dhananjaya De Silva for 19 to leave the Sri Lankans on 128 for seven.
Keshav Maharaj trapped Suranga Lakmal LBW for seven.
Rabada and Dean Elgar ended Sri Lanka’s innings by getting the wicket of Niroshan Dickwella for 42 with the visitors all out on 154.
The Proteas’ batsmen started their second innings poorly just like their first with Dean Elgar dismissed for two.
South Africa was 51 for three after losing Aiden Markram for 18 and Temba Bavuma cheaply for six. Faf Du Plessis and Hashim Amla’s partnership added 39 runs to take the Proteas’ to 90.
However, Dhananjaya De Silva broke the partnership dismissing Amla for 32 to leave the Proteas on 90 for four.
Lakmal took a good catch off his own bowling to send Quinton De Kock packing for one.
De Silva struck after tea with Mulder going back to the pavilion for five with the Proteas having a hundred on the scoreboard.
Du Plessis scored his 19th test fifty before the Proteas were bowled out for 128.
In reply, Sri Lanka lost two wickets and will resume day three on 60 for two.