Dale Steyn picked up 4-48 to move joint-seventh on the list of all-time Test wicket-takers as South Africa claimed a 170-run lead over Sri Lanka on day two of the first Test in Durban.

Steyn was the spearhead of South Africa's attack again - as he was so often before a serious shoulder injury in 2016 sidelined him for the best part of two years - and overtook Indian great Kapil Dev and Sri Lankan legend Rangana Herath in career Test wickets.

Steyn, 35 years old but with no imminent plans to retire, started things by removing Lahiru Thirimanne late on day one.

He had Sri Lanka debutant Oshada Fernando lbw in the third over of the second day and added top-scorer Kusal Perera (51) and tailender Suranga Lakmal to his haul.

That took Steyn to 437 Test wickets, past Dev and level with England's Stuart Broad.

Broad has played 126 Tests while Steyn is playing his 92nd.

Ahead of Steyn are just the six bowlers who have taken more than 500 Test wickets; Muttiah Muralitharan, Shane Warne, Anil Kumble, James Anderson, Glenn McGrath and Courtney Walsh.

Steyn was instrumental in bowling Sri Lanka out for 191 to see South Africa hold a 44-run first-innings lead in the series-opener at Kingsmead.

The home batsmen increased that advantage to 170 with South Africa 4-126 in its second innings at stumps on the second day of a low-scoring game on a bowler-friendly pitch in Durban.

Aiden Markram (28), Hashim Amla (16), Temba Bavuma (3) and Dean Elgar (35) were all out for South Africa, with left-arm spinner Lasith Ambuldeniya taking 2-36 to add to his one wicket in the first innings on his debut.

Earlier, Vernon Philander and Kagiso Rabada had two wickets each and Duanne Olivier one in support of Steyn as South Africa's four-man pace attack did the damage in the Sri Lankan first innings.

Steyn's performance helped South Africa hit back after the home team batted first and was bowled out for 235 by Sri Lanka's inexperienced bowlers.

In Sri Lanka's first innings, Perera resisted Steyn for his fourth Test fifty and first since November 2016 but had little help from the rest of the top order.

Sri Lanka's last three batsmen added a handy 49 runs to the total.

MOST TEST WICKETS

1) Muthiah Muralidaran (SL) 800 wickets in 133 Tests

2) Shane Warne (Aus) 708 in 145 Tests

3) Anil Kumble (Ind) 619 in 132 Tests

4) James Anderson (Eng)* 575 in 148 Tests

5) Glenn McGrath (Aus) 563 in 124 Tests

6) Courtney Walsh (WI) 519 in 132 Tests

=7) Dale Steyn (SA)* 437 in 92 Tests

=7) Stuart Broad (Eng)* 437 in 126 Tests

9) Kapil Dev (Ind) 434 in 131 Tests

10) Rangana Herath (SL) 433 in 93 Tests

* current player