South Africa squared their Test series against Australia at 1-1 with one to play thanks to a 231-run victory inside four days in Port Elizabeth.
Set 448 to win the second Test, Australia were bowled out for 216 late on the fourth evening after South Africa claimed the extra half-hour.
Dale Steyn finished with figures of 4-55 from 20 overs of swing bowling of the highest order and received good support from fellow seamer Vernon Philander (2-39).
Australia openers Chris Rogers and David Warner put on 126 but nobody else made double figures as nine wickets went down after tea.
Rogers was ninth out for 107 - his third hundred in four Tests - failing to make his ground going for a quick run and part-time spinner Dean Elgar (1-24) completed victory in the next over by having last man Nathan Lyon lbw.
The decider takes place at Newlands from March 1-5.
Warner had counter-attacked against the new ball, racing his way to a 61-ball half-century either side of lunch to raise hopes a world-record run chase would be possible on a slow pitch, particularly so given South Africa's attack was a man down due to Wayne Parnell's groin strain.
Australia's openers were rattling along at more than four-an-over before South Africa made the first breakthrough, Warner going lbw for 66 to a delivery from off-spinner JP Duminy (1-33) that was just clipping leg-stump.
Alex Doolan dropped anchor through to tea, which came with Australia on 141-1, and couldn't get going after the break either, eventually edging a Morne Morkel (1-46) delivery to Graeme Smith at first slip to end an innings of five from 43 balls.
Shaun Marsh bagged a pair, pinned lbw first ball by Philander and Steyn then took centre stage, working his way through the remainder of Australia's middle order.
He started by having Australia captain Michael Clarke (1) held low down by Faf du Plessis at second slip and made it two in two balls when Steve Smith (0) planted his front pad to a delivery that came back late to trap him lbw.
Brad Haddin (1) was able to leave the hat-trick delivery alone outside off-stump but his stay was also brief. Steyn uprooted his middle stump with an inswinger for the second time in the match later in the same spell.
Rogers was by now waging a lone battle and brought up his fourth Test century - and first against opposition other than England - from 192 deliveries, including 11 fours.
But South Africa were granted an additional 30 minutes to finish the job after Philander had Mitchell Johnson (6) lbw to leave Australia 197-7 as the scheduled close loomed.
And, with rain forecast for the final day, it was just enough time. Steyn added his fourth wicket, Ryan Harris lbw for six, Rogers was run out by substitute fielder Alviro Petersen and, with the light fading, Lyon (0) became the sixth lbw victim of the innings in what would have been the third last over of the day.
South Africa had batted on for 17 overs at the start of the day to advance from 192-4 in their second innings to a declaration at 270-5.
Hashim Amla, on 93 overnight, was able to complete his 21st Test hundred and was 127 not out when Graeme Smith called in his batsmen with half-an-hour of the morning session remaining.
Quinton de Kock (34) was the only wicket to fall, guiding a catch to Clarke from spinner Lyon's bowling while chasing quick runs.