The 28-year-old southpaw scored a masterful ton, adding 78 runs for the final wicket with number 11 Vishwa Fernando (6) to help the visitors cross the finish line and register only their second win in South Africa — with the first one coming in 2011-12 at the same venue.
After stuttering to 206-5 chasing 304, it was Perera and Dhanjaya de Silva (48) who stitched together a 96-run partnership for the sixth wicket to give the visitors some hope of chasing down the score.
However, Keshav Maharaj (3/71) struck twice in consecutive deliveries to push the Lankans on the backfoot once again. The spinner removed de Silva, trapping him leg before wicket and then had Suranga Lakmal caught at first slip for 0.
Duanne Olivier then removed Lasith Embuldeniya for 4, with Maharaj soon accounting for Kasun Rajitha (1), as the hosts looked set for a victory.
With the scoreboard reading 226/9, Sri Lanka looked down and out but Fernando resisted the onslaught and Perera piled on the runs from the other end. This effort by the Lankans happens to be the third highest successful chase in Durban.
Perera rotated the strike well, and wasn’t afraid to go for the big shots. He hit five sixes and 12 boundaries in his innings – including the winning runs as he guided one past the slip cordon for a four.
Ottis Gibson was understandably unhappy as his side let the game slip away from their grasp. Ecstatic Lankans led by captain Dimuth Karunaratne ran onto the field to celebrate the historic victory.
Earlier in the day, Steyn provided Proteas with the breakthroughs on a hot, humid morning at Kingsmead when he took two wickets in the space of three balls in the tenth over of the day.
Steyn had Oshada Fernando caught at second slip by Faf du Plessis after the debutant made 37 and shared a fourth-wicket stand of 58 with Perera. Two balls later Niroshan Dickwella pushed forward to Steyn and the bowler held a sharp, right-handed return catch.
South Africa were without opening bowler Vernon Philander, who was sidelined due to a hamstring niggle.
With this win Sri Lanka have taken a 1-0 lead in the two-match series, with the second Test scheduled to begin on Thursday at Port Elizabeth.
First Published: February 16, 2019, 7:21 PM IST