England were reeling at 48 for three when bad light stopped play, still 195 runs short of avoiding an innings defeat.
England lost Alastair Cook, Johnathan Trott and skipper Andrew Strauss in quick succession as South Africa looked set for a series-levelling win.
Earlier Mark Boucher cut loose to lift South Africa to a healthy 423 for seven in their first innings.
Boucher was unlucky to miss out on a deserving century, when he top-edged a Graeme Swann delivery to be holed out in deep for 95.
The South Africa wicketkeeper had spanked nine fours in his 118-ball innings and celebrated becoming only the second specialist wicketkeeper to score 5,000 Test runs after Australian Adam Gilchrist when he reached 66.
After the Proteas batsmen did their job, the bowlers did serious damage in England's second innings. Morne Morkel had Alastair Cook caught at first slip by Graeme Smith in the fourth over, while Dale Steyn produced a superb delivery which swung away late and caused Jonathan Trott to edge a catch to AB de Villiers at third slip.
Debutant Wayne Parnell added to England's misery, when he trapped England captain Andrew Strauss leg before wicket shortly before the day's third and final stoppage.
Earlier, Boucher and AB de Villiers took their sixth-wicket stand to 120 before Stuart Broad ended De Villiers' innings.
De Villiers had scored 58, his 20th Test half-century, when he whipped a shortish delivery from Broad to Paul Collingwood at wide mid-on. Debutant Ryan McLaren, on 12 not out, ended the session with Boucher.
South Africa had begun the third day on 215 for two in reply to England's 180, with Hashim Amla on 73 and Jacques Kallis on seven.
Kallis was out without adding to his overnight score and Amla added just two more runs as both were dismissed in the first two full overs of the day.
England's first wicket of the day arrived at the end of Broad's first over as Amla drove at a delivery that left him, edging the ball to wicketkeeper Matt Prior.
Kallis was then undone by a short delivery from left-arm swing bowler Ryan Sidebottom, getting into a tangle and edging an attempted pull on to his shoulder, from where it rebounded to the gully. James Anderson took a fine diving catch.
JP Duminy, under pressure for his place after scoring just 107 runs in six innings, was dismissed by off-spinner Graeme Swann for the third time in the series. Swann's first delivery of the day turned away from the left-hander, found the edge and Collingwood took the catch at slip after the ball had flown past Prior.
South Africa were then 235 for five, but the pugnacious Boucher and the positive AB de Villiers continued to chase runs as South Africa's lead was extended to 202 at tea.
De Villiers twice referred successful appeals by Swann to the third umpire. Daryl Harper overturned both decisions, and Boucher survived a referral by the same bowler.
Boucher reached his 32nd Test half-century in just 67 deliveries off the final ball before lunch. Broad had picked up three for 82 in 28 overs.
Scorecard
England first innings 180
South Africa first innings (overnight 215-2)
G. Smith c Strauss b Sidebottom 105
A. Prince c Swann b Broad 19
H. Amla c Prior b Broad 75
J. Kallis c Anderson b Sidebottom 7
AB. de Villiers c Collingwood b Broad 58
JP. Duminy c Collingwood b Swann 7
M. Boucher c Trott b Swann 95
R. McLaren not out 12
D Steyn not out 1
Extras (b-8, lb-9, w-5 nb-1) 23
Total (seven wickets declared; 119 overs) 423
Fall of wickets: 1-36, 2-201, 3-217, 4-217, 5-235, 6-355, 7-419
Bowling: Anderson 30-4-111-0, Sidebottom 31-6-98-2, Broad 29-4-83-3 (w-5), Swann 23-0-93-2, Collingwood 6-1-21-0.
England second innings
A. Strauss lbw b Parnell 22
A. Cook c Smith b Morkel 1
J. Trott c de Villers b Steyn 8
K. Pietersen not out 9
P. Collingwood not out 0
Extras (lb-4, w-1 nb-3) 8
Total (three wickets; 13.2 overs) 48
Fall of wickets: 1-6, 2-21 3-48
Bowling: Steyn 5.2-0-18-1, Morkel 6-2-21-1, Parnell 2-0-5-1.
England call up Carberry as cover for Collingwood
De Villiers keeps ball-tampering debate simmering
Strauss hails 'emphatic' win over South Africa
De Villiers slams SA selectors
Kallis leads South Africa's fightback