Despite stiff resistance shown by the South Africans for most of the final day of the second Test, the Australians surged to victory by 112 runs after leg-spinner Warne claimed six for 86. It was his 35th five-wicket haul in Tests.
The visitors won the first match in the three-Test series by seven wickets in Cape Town. The final Test starts in Johannesburg on Friday.
South Africa, who were set a target of 410, were dismissed for 297 with 6.1 overs left in the match.
Mark Boucher [ Images ] fought hard for his unbeaten 51.
Warne, who began his first spell unchanged from the 16th over before lunch until an hour after tea, bowled to a field that at times featured a silly mid-off, silly point, two slips, a leg slip and a forward short leg.
Warne came on to bowl in the second hour of the day's play, and he struck with his fourth delivery when De Villiers over balanced as he lunged forward to try and smother a leg-break.
The batsman missed the ball and was stumped by wicketkeeper Adam Gilchrist [ Images ] for 46 to end an opening stand of 91.
Warne removed Smith four overs later when the lefthander swept at a leg-break and was caught off the glove by Justin Langer at leg slip for 40.
Jacques Kallis [ Images ], the mainstay of South Africa's batting order who scored 114 in the first innings, was Warne's next victim when he was trapped in front for seven.
South Africa slumped to 122 for four an over later after Herschelle Gibbs [ Images ], who scored 17, fended a rearing delivery from fast bowler Stuart Clark to Warne at slip.
Ashwell Prince [ Images ] and Jacques Rudolph took South Africa to lunch without further loss, but eight overs into the second session Prince misjudged the bounce of a short delivery from Clark. He sent a looping catch to Michael Hussey [ Images ] at midwicket to be dismissed for seven.
Left-handed Rudolph appeared to be well settled after smashing seven fours in his 36 but an attempt to pad away a fizzing leg-break from Warne backfired. The ball hit his uplifted gloves on its way to Langer at silly point.
Boucher and Nicky Boje stood firm until the 13th over after tea. The partnership was broken when Boje smashed a delivery from fast bowler Michael Kasprowicz to cover, where substitute fielder Michael Clarke [ Images ] held a stinging catch.
Boje's dismissal for 48, an innings in which he hit nine fours, ended a stand of 72 that stalled Australia's progress for 83 minutes.
The match ended when Makhaya Ntini [ Images ] left a googly from Warne and was given out lbw for nought.
Boucher batted for 223 minutes, faced 156 balls and hit nine fours.