An inspired Andrew Flintoff became the 12th England player to take 200 Test wickets as South Africa reached 256 for six at stumps on the second day of the third Test at Edgbaston on Thursday.
Flintoff, trying to help England defend their below-par total of 231, produced one of his most hostile spells of bowling after tea that culminated with the wicket of Jacques Kallis.
South Africa, though, closed with a lead of 25 runs when bad light stopped play with the ever-reliable Ashwell Prince 37 not out and Mark Boucher on 11.
The new ball will be due in four overs when Flintoff is likely to add to his analysis of four for 68.
Flintoff trapped Neil McKenzie lbw for 72 to become the 10th player to claim 200 Test wickets and score 3,000 Test runs, following the likes of Ian Botham, Garfield Sobers, Kapil Dev and Imran Khan.
But his most prized wicket of the day, which stirred a sparse crowd that sat through the gloomy and damp weather, was that of Kallis, who made 64 for his first half-century of the series.
Kallis was fortunate to survive an lbw appeal when on 55 to a Flintoff yorker but Pakistani umpire Aleem Dar gave him not out, much to the bowler's bemusement.
Flintoff continued to express his displeasure to Dar during the following over while fielding at square leg.
Kallis, the eighth-highest scoring Test batsman of all time, appeared helpless when an angry Flintoff sought revenge for the umpiring error. Kallis had been shaken by short deliveries, beaten by out-swing and finally lost his off stump after being squared up by another hostile ball that swung late.
The battle between Kallis and Flintoff was reminiscent to the famous duel between former England opener Mike Atherton and South African fast bowler Allan Donald in 1998.
AB de Villiers also perished in that Flintoff spell, which lasted 10 overs either side of tea, when top-edging a hook shot to Ryan Sidebottom at fine leg.
Mark Boucher then ducked to avoid his first ball when a swinging yorker narrowly missed his off stump.
Earlier, night-watchman Paul Harris (19), who shared a second-wicket stand of 77 with McKenzie, frustrated England for 89 minutes until he departed before lunch to a catch at third slip by Alastair Cook off the bowling of Sidebottom.
After McKenzie was dropped by Paul Collingwood at second slip, James Anderson gave England a fillip by dismissing Hashim Amla for nine with a diving one-handed catch off his own bowling.
There were 25 overs lost to the weather in the day. South Africa are 1-0 up in the four-match series.