Amla raced to a 126-ball century before being caught for 112 with his team 14 short of their target of 236.
South African captain Smith became the first player in history to score four centuries in winning fourth innings run chases, reaching the mark with a single to level the scores and then hitting the winning run to finish on 101 not out.
Smith and Amla put on 195 for the second wicket in only 184 minutes off 248 balls. The ease of their strokeplay on a sunny morning made a mockery of the previous day's batting collapses by both teams.
South Africa completed their win before lunch on the third day to take a 1-0 lead in the two-Test series.
Both the speed and decisiveness of the win seemed improbable less than 24 hours earlier when South Africa were bowled out for 96 in their first innings, giving Australia a lead of 188 runs. But Australia were shot out for 47 to swing the odds back in the home team's favour.
Smith and Amla started the day on 88 for one and there was an early alarm when Amla, after adding only one to his overnight score of 29, was dropped at first slip by Shane Watson off Ryan Harris. Amla had been dropped off the last ball of the second day's play by Mike Hussey at gully, also off Harris.
Harris beat Amla again when he struck the batsman on the pads in his next over. He appealed for a leg before wicket decision which was turned down by umpire Billy Doctrove.
He asked for a television review but unlike the second day, when four decisions were overturned in favour of bowlers, replays showed the ball was going down the leg side.
After playing themselves in, Smith and Amla increased the tempo and posted a century partnership off 164 balls. With Amla in particular in aggressive mode, the run rate increased rapidly before Amla played one extravagant stroke too many and was caught at gully by Australian captain Michael Clarke off Mitchell Johnson.
Harris was the most impressive of the Australian bowlers but could not take a wicket, while Shane Watson was unable to repeat his heroics of Thursday when he took five for 17 to send South Africa tumbling.
Johnson, who shone against South Africa in home and away series three seasons ago, was unimpressive and conceded 61 runs in 11 overs despite taking Amla's wicket.
Final scores on the third day of the first Test between South Africa and Australia at Newlands here today:
Australia, first innings: 284
South Africa, first innings: 96
Australia, second innings: 47
South Africa, second innings (overnight 81-1):
G Smith not out 101
J Rudolph c Haddin b Siddle 14
H Amla c Clarke b Johnson 112
J Kallis not out 2
Extras: (LB-4, Nb-2, W-1) 7
Total: (for 2 wkts in 50.2 overs) 236
Fall of wickets: 1-27, 2-222
Bowling: Harris 14-2-67-0, Siddle 12.2-0-49-1 (1nb), Watson 10-0-44-0, Johnson 11-1-61-1, Lyon 3-1-11-0.