James Anderson starred with the ball and Jonny Bairstow was out lbw for 99 to end a swashbuckling counterattack as South Africa struggled to 220-9 on day two of the fourth Test at Old Trafford, where they trail England by 142 runs.
Wicketkeeper-batsman Bairstow fell agonisingly short of a deserved century on Saturday, a review failing to spare him when he tried to sweep spinner Keshav Maharaj and missed, leaving England all out for 362.
Bowling on home turf from the end of the ground renamed this week in his honour, the afternoon belonged to Lancastrian Anderson (4-33), as he claimed the key scalp of Dean Elgar in the hosts' first over in the field, the Proteas' form batsman in this series trapped plum lbw for a duck.
Anderson came to the fore again in the evening session, removing Temba Bavuma's bails for 46 and encouraging Faf du Plessis (27) to drag an inside edge onto his stumps, before drawing an outside edge from Theunis de Bruyn (11), taken in the slips by captain Joe Root.
Toby Roland-Jones (1-41) had earlier followed the example of his veteran colleague by removing dangerman Hashim Amla, who offered up a soft edge gratefully accepted by the gloves of Bairstow to depart for 30 soon after the resumption from lunch.
The off-spin of Moeen Ali (2-57) proved significant, accounting for Heino Kuhn (24) and Maharaj (13), while the patience of Stuart Broad (2-45) was eventually rewarded with the important late scalp of Quinton de Kock, out edging behind to Bairstow for 24, followed by that of Kagiso Rabada (23) off what proved to be the last ball of the day, caught thanks to the lightning-fast reflexes of Ben Stokes.
Anderson, England's evergreen strike bowler, was the man of the moment, though, his best figures in a Test innings at Old Trafford - all from the newly christened James Anderson End - leaving Morne Morkel (18 not out) and Duanne Olivier to await their inevitable fate on Sunday.
Earlier, Bairstow, resuming on 33 and with England looking to build on an overnight score of 260-6, thrilled the crowd and tormented South Africa with an irresistible combination of judgement, shot selection and execution.
The 27-year-old farmed the strike expertly, regularly orchestrating a single off the last ball of each over to protect number 11 Anderson, while finding the gaps in the field with an array of deft cuts and firm drives, as he raced first to a half-century and then closed in on a ton.
The highlight of the counterattacking masterclass came at the expense of Olivier, who was impudently scooped to fine leg for four and then smacked down the ground and into the pavilion for six off the next ball.
Bairstow could not finish the task, though, becoming the first England Test batsman to get out lbw a run short of a century since Eddie Paynter against Australia at Lord's in 1938.
Runs and wickets had flowed with regularity during an entertaining morning session, as the loss of nightwatchman Roland-Jones for four was followed by fleeting appearances at the crease from Moeen (14) and Broad (7).
While he will be hugely frustrated to miss out on a fourth century at Test level, Bairstow's efforts in establishing a respectable lead - and Anderson's feats with ball in hand - could well ensure England at the very least avoid defeat to secure a first home series victory over South Africa since 1998.