England great James Anderson marked becoming the first player to appear in 100 home Tests by taking 3-32 as South Africa were dismissed for just 151 on Thursday's first day of the second Test at Old Trafford.
Kagiso Rabada starred with both bat and ball as the Proteas fought back, the fast bowler top-scoring with 36 and then dismissing star batsman Joe Root for just nine as England, bidding to level this three-match series at 1-1, slumped to 43-3.
But by stumps England had recovered to 111-3, a deficit of 40 runs, with struggling opener Zak Crawley surviving to be 17 not out off 77 balls.
By contrast, Jonny Bairstow was 38 not out off 45 balls, including six fours, after sharing an unbroken partnership of 68 with Crawley.
"It was sort of one of those good tosses to lose in a sense," England veteran Stuart Broad told Sky Sports after taking 3-37 in the unfamiliar position of first change.
"We were quite keen to have a bowl with the overhead conditions.
PAY ATTENTION: Share your outstanding story with our editors! Please reach us through firstname.lastname@example.org!
"We're in a really strong position. It looked at one point as if South Africa could have picked up five (wickets) but we're pretty happy with that day."
Rabada meanwhile defended South Africa's fallible top order.
"None of them are getting out on purpose," he told reporters.
"It is a young batting line-up and they are gaining experience. You can't go around pointing fingers, it's just energy-sapping."
South Africa's innings ended in sunshine but the improved batting conditions initially did England little good.
Alex Lees was caught behind off Lungi Ngidi for four before Ollie Pope, who made a promising 23, was bowled by a 90 mph delivery from express quick Anrich Nortje.
Rabada then dismissed Root for his third low score this series, although first slip Sarel Erwee needed four attempts to hold the outside edge.
Anderson, who has now played in 97 Tests in England and three in Wales, had earlier made the initial breakthrough when -- bowling from the end named after him on his Lancashire home ground -- he removed Erwee during a morning session where the Proteas slumped to 77-5 at lunch.
The 40-year-old paceman then struck twice in successive balls to reduce South Africa to 92-7.
But Rabada and Nortje (10) checked England's progress with a ninth-wicket stand of 35.
South Africa captain Dean Elgar, with the Proteas top of the World Test Championship table, took a calculated risk in batting first after winning the toss despite overcast conditions favouring fast bowling.
His thinking was influenced by the recall of off-spinner Simon Harmer in place of left-arm quick Marco Jansen, unfortunate to be dropped in the only change to the team that thrashed England by an innings and 12 runs in the first Test at Lord's last week.
The pitch is expected to offer more turn as the game goes on.
"We played two spinners for a reason, knowing it can get quite dry out there," explained Rabada.
Anderson struck in just the fifth over when Erwee, fresh from a fine 73 at Lord's, was caught by diving wicketkeeper Ben Foakes off an inside edge.
Fellow opener Elgar had a couple of reprieves before he fell for 12, with seamer Ollie Robinson, in for Matthew Potts in the only change to England's side at Lord's, denied his wicket by a marginal no-ball.
Broad twice beat Elgar before he dismissed him, with Bairstow holding a good low catch at third slip.
Broad then removed Keegan Petersen (21) with another catch in the cordon.
Stokes (2-17) got in on the act with just his third ball when Aiden Markram (14) top-edged a pull to Foakes before Rassie van der Dussen (16) was lbw after the all-rounder's raucous appeal was confirmed on the batsman's review.
Anderson, yet to claim a hat-trick while taking more wickets than any other fast bowler in Test history, went close on Thursday.
He had Harmer and Keshav Maharaj plumb lbw only to spear the hat-trick ball, to Rabada, well down the legside.