Monty Panesar led England's attack with four wickets as South Africa were made to follow-on at Lord's here on Saturday.
The Proteas, at stumps on the third day of the first Test, were 13 without loss in their second innings.
That left them still 333 runs behind England's imposing 593 for eight declared which featured Ian Bell's Test-best 199 and 152 from Kevin Pietersen in his first Test innings against the land of his birth.
South Africa captain Graeme Smith was eight not out, with Neil McKenzie unbeaten on one.
Left-arm spinner Panesar took four for 74 in 26 overs and then, after England captain Michael Vaughan had enforced the follow-on in fading light, unusually took the new ball alongside occasional off-spinner Pietersen.
Pietersen, playing his first Test against South Africa, had earlier ended the Proteas' first innings when Dale Steyn holed out off his third ball.
But the day's most notable first saw Ashwell Prince score a hundred in his maiden Test innings against England.
But no-one could stay with the left-hander long enough to prevent the Proteas being bowled out for 247, a first innings deficit of 346.
South Africa, at tea, were 156 for four with Prince, in at 47 for three, unbeaten on 52 and AB de Villiers 38 not out.
De Villiers had added just four more runs to his score when, his drive off Panesar was brilliantly caught, goalkeeper-fashion and in two-hands at mid-on by an airborne James Anderson.
The experienced Mark Boucher then fell cheaply when, trying to leave the ball, he was bowled off the bottom of the bat by fast bowler Stuart Broad.
Prince produced the occasional gem, reverse-sweeping Panesar for four for example, but the follow-on avoidance total of 394 looked a long way off with just the tail now keeping him company.
And they were not lingering long with Morne Morkel, bowled through a big gap between bat and pad, and Paul Harris, with the aid of another fine catch by Anderson, both falling to Panesar.
England then became caught up in a cat-and-mouse game with Prince, allowing him easy singles so they could bowl at Steyn instead rather than attacking both batsmen.
This just had the effect of playing in Steyn, who helped Prince added 42 runs, while his partner proceeded towards a century at his own pace.
England took the new ball but this was negated by the fact Vaughan continued to set the field back for Prince until near the end of the over.
Prince countered by clipping left-arm quick Ryan Sidebottom off his legs for a four which took him to 95.
Belatedly, Broad tested Prince with a yorker which the batsman kept out and then struck him a couple of painful blows with shorter but well-directed deliveries.
However, Prince cut Broad over backward point for four to go to 99 off the last ball of an over. But Steyn's single next ball off Sidebottom got Prince back on strike.
And one off Sidebottom saw Prince to the coveted landmark, the elated No5 punching the air as he celebrated his eighth century in his 42nd Test. He'd batted for nearly five hours, facing 173 balls with a six and 13 fours.
But soon afterwards his gutsy effort came to an end when, carving outside off-stump, he was caught behind for 101 off Sidebottom.
Earlier, Vaughan was rewarded for keeping Panesar going after lunch, having given him a couple of token overs before the break, when with his first ball after the resumption, he bowled McKenzie round his legs.
South Africa saw three of their key top order batsmen all dismissed in single figures after starting Saturday on seven without loss.
Five years ago at Lord's, Smith made 259 - the highest score by an overseas batsman in a Test at the 'home of cricket'.
But it was a different story on Saturday when he was out for eight after an Anderson ball took the shoulder of the bat and lobbed gently to Bell at gully.
Hashim Amla was caught behind off Broad for six before Jacques Kallis, on seven, nicked Sidebottom low to diving first slip Andrew Strauss.