Durban: England will need just four wickets on the final day of the second Test to beat South Africa following brilliant spells from Graeme Swann and Stuart Broad.
A remarkable wicket-taking burst from Graeme Swann (3-22) and Stuart Broad (3-18) left South Africa 76-6 before bad light and rain came to their aid.
They were still 156 runs behind England as the Barmy Army roared its approval.
England had earlier declared on 575-9, 232 ahead, with Ian Bell making 141 from 227 balls and Matt Prior 60.
As South Africa then reached a fairly comfortable 27-0 from their first nine overs in their second innings on a wicket with a reputation for going flat, the draw looked the likeliest result by a long way.
But Swann removed Ashwell Prince with his second ball, thanks to a sharp catch from Bell at silly point, and clean bowled Hashim Amla on the stroke of tea.
Jacques Kallis, so often the bane of English supporters, suffered a temporary aberration as he chose to leave a Broad inswinger which ripped out his off-stump.
AB de Villiers, who watched that dismissal from the pavilion, failed to learn the lesson. He padded up to another Broad delivery, England pleaded for lbw and umpire Amiesh Saheba upheld the appeal.
A referral failed to save De Villiers' bacon as replays showed the ball bending back to clip the top corner of off-stump.
A hurried chat between skipper Graeme Smith and the incoming batsman JP Duminy failed to stop the momentum. Duminy tentatively prodded at first ball he could have left and the inside edge crashed into his stumps to give Broad two wickets in two balls. The hat-trick ball was a good one, but Mark Boucher defended it safely.
Smith perilously avoided running himself out for the second time in the match as England continued to crank up the pressure, but was the next to go when Swann spun one past his bat and into his pads. South Africa's skipper used up his final referral, but it was a futile gesture as Swann won his fourth lbw appeal in the match.
In the circumstances, Mark Boucher and Morne Morkel did well to survive a further 11 overs of Broad, Swann and James Anderson - the only blemish coming when Prior dropped Morkel in the final over of the day.
Thick cloud cover was in place when England resumed their innings on Tuesday morning with the scoreboard showing 386-5. Bell was on 55 and Prior 11.
Prior moved into top gear against the occasional spin of Duminy, launching him for a four and a slightly fortuitous six in an over which saw England's wicketkeeper reach his half-century.
Duminy had his revenge when Prior chopped onto his stumps, but the two batsmen had by then added 112, putting defeat out of the equation for England.
Bell, whose place has been under intense scrutiny, reached his ninth Test century and first since July 2008 with a lofted on-drive for four off Paul Harris, but the run-up to lunch was otherwise a dull passage of play, with neither Bell nor Broad showing much adventure.
Brief scores
South Africa: 343 (Kallis 75, Smith 75) and 37 for 2 (Broad 3-18, Swann 3-22)
England: 575 for 9 dec (Bell 141, Cook 118)
Status: South Africa train by 156 runs.