South Africa dismissed both England opening batsmen early and claimed two more wickets before lunch on the fifth and final day of the second Test at Newlands on Wednesday.
England were 87 for four at lunch, a lead of 89.
The flurry of wickets enlivened a day which started with a draw seemingly the only likely result.
Alastair Cook and Alex Hales fell within the first three overs of the day, both without adding to their overnight scores of eight and five respectively, while Joe Root was bowled just before the mid-morning drinks break. Nick Compton fell shortly before lunch.
Cook was caught down the leg side by wicketkeeper Quinton de Kock off Kagiso Rabada and Hales fell to an outstanding catch by Chris Morris at third slip, diving low to his right, off Morne Morkel.
Root made 29 off 29 balls before he was bowled by Morris’s first ball of the innings, a full delivery which swung late to take out his off stump.
Root had an escape on 17 when he edged a catch to AB de Villiers at second slip off Morkel, only for a television review to show it was a no-ball.
While both Root and James Taylor (23 not out) went for their shots, Compton dug in and played a solid defensive innings in making 15 off 60 balls.
It came as a surprise when he went on the drive against a full delivery from off-spinner Dane Piedt and hit a catch to Faf du Plessis at a short mid-on position.
With partly cloudy weather providing a contrast to the first four days of relentless sunshine, it was the first time in the match that the bowlers were on top. Morkel was particularly hostile, taking one for 12 in seven overs before lunch.
Both teams scored over 600 runs in the first innings before declaring.