Cape Town - James Anderson completed a five-wicket haul and Ben Stokes set an England catching record before England stretched their lead on the third day of the second Test against South Africa at Newlands on Sunday.
England were 52 for one wicket in their second innings at lunch, an overall lead of 98 runs.
Anderson took both South Africa's remaining wickets as the hosts were bowled out for 223, adding only eight runs to their overnight total.
Stokes set an England Test record for a fielder when he held his fifth catch of the innings to dismiss last batsman Anrich Nortje off Anderson's bowling.
Zak Crawley made a quick 25 before he was caught behind off Kagiso Rabada but Dom Sibley and Joe Denly saw England through to lunch.
Anderson completed the 28th five-wicket haul of his Test career. He struck with the first ball of the day when Rabada was caught behind.
It put Anderson on a hat-trick after he finished the second day with the wicket of Keshav Maharaj. Nortje survived but four overs later edged a drive to give Stokes his fifth catch, all held at second slip.
It was the first time in 1020 Test matches that an England fielder held five catches.
There had been 23 instances of four catches in an innings, most recently by England captain Joe Root against Ireland at Lord's last year.
Stokes equalled the world Test record of five catches, which had been achieved 11 times previously, most recently by Steve Smith of Australia in 2017/18, also at Newlands.