Ben Stokes equaled the record for catches in an innings by a fielder as England bowled South Africa out for 223 to take a 46-run first-innings lead in the second test at Newlands on Sunday.
Stokes took all his five catches at second slip to become the 12th player — not including wicketkeepers — to take five. Australia's Steve Smith was the last player to do it in test cricket. His five catches also came at the Cape Town ground in 2018.
England needed just over four overs to end South Africa's first innings on Day 3 at Newlands, starting when James Anderson had Kagiso Rabada caught behind for a first-ball duck off the first ball of the day.
Anderson finished with 5-40, his 28th five-wicket haul in tests. That took him past India's Ravichandran Ashwin and England great Ian Botham and into seventh place on the all-time list for five-fors. The 37-year-old Anderson now has the outright record for most five-wicket hauls by an England player in test cricket.
Anderson wrapped it up when Anrich Nortje sliced a thick edge to give Stokes his record-equaling catch.
England made 269 in its first innings after winning the toss and batting. South Africa was 215-8 overnight.
South Africa won the first test to lead the four-match series but England now has a strong chance to draw level in Cape Town.