Steyn cleans up Australia
South Africa squared their Test series with 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 quick, late swing bowling 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 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.
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 JP Duminy 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 delivery from Morne Morkel 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, reverse swinging his way through the remainder of Australia's middle order.
He started by having Australia captain Michael Clarke held low down by Faf du Plessis at second slip and had two in two balls when Steve Smith planted his front pad to a delivery that came back late to trap him lbw.
Brad Haddin was able to leave the hat-trick ball alone outside off-stump but his stay was also brief. Steyn uprooted his middle stump for the second time in the match later in his 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 lbw to leave Australia 197-7 as the scheduled close loomed.
And it was just enough time. Steyn added his fourth wicket, Ryan Harris lbw, Rogers was run out and, with the light fading, Lyon went lbw to Elgar 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 Michael Clarke off spinner Nathan Lyon's bowling while chasing quick runs.