Due to poor performances throughout New Zealand and Australia tours, Dinesh Chandimal was dropped from the Test squad for South Africa tour. Karunaratne was named as the stand-in captain for the tour, while Chandimal was released to play domestic cricket and regain his form with the bat.[52] On 13 February 2019, Karunaratne became the 17th Test captain for Sri Lanka.[53] Under his captaincy, Sri Lanka won the match by 1 wicket courtesy of Kusal Perera's unbeaten century.[54] In the match, during South Africa's first innings, an apparent DRS timing error cost Sri Lanka a wicket of Hashim Amla. Vishwa Fernando rapped Amla on the pads for a confident appeal for lbw. Umpire Aleem Dar was unmoved, and after a short discussion Sri Lanka captain Karunaratne asked for a review - but Dar turned down the request on the basis that the visitors had taken too long to ask for it. However commentators confirmed that it took only 13 seconds when Karunaratne asked for the review.[55]
Sri Lanka won the second match at Port Elizabeth comfortably to seal the series 2-0.[56][57] This was Sri Lanka's fourth consecutive win over South Africa as well. With this win, Sri Lanka became the first Asian team to win a Test series in South Africa and third overall after England and Australia.[58] In March 2019, Karunaratne was arrested over a drink-drive incident in Colombo, which injured another motorist, and was later released on bail.[59][60] He was fined, with Sri Lanka Cricket taking no further action on the incident.[61] The following month, he was named as the captain of Sri Lanka's squad for the 2019 Cricket World Cup.[62][63] His maiden tour as ODI captain came through Scotland tour in 2019 prior to the World Cup. First ODI was washed out due to rain. However, in the second ODI, he scored his maiden ODI fifty by scoring 77 runs.[64] Sri Lanka posted 321 in 50 overs and finally Scotland bowled out for 199. Sri Lanka won the match by 35 runs in DLS method.[65]