Skipper Michael Clarke declared Australia's second innings at 267 for eight, leaving the top-ranked Proteas an improbable target of 430 runs to win off a maximum of 140 overs to go one up in the three-Test series.
Australia grabbed the vital wickets of first innings centurion Smith and Amla in the session before tea.
At the interval, Alviro Petersen was on 20 with Jacques Rudolph narrowly avoiding a leg before wicket review to be not out two.
The odds are firmly stacked against the South Africans, needing to set a new record for a successful fourth innings run chase at the Adelaide Oval.
The existing record is the 315-6 Australia scored 110 years ago to overhaul England.
South Africa skipper Smith, who scored 122 in the first innings, was out second ball when he got a thick edge to a Ben Hilfenhaus outswinger and Ricky Ponting snapped up a splendid low catch at second slip.
It was also a psychological blow as the Proteas have not lost a Test match in the previous 25 matches in which Smith has scored a century.
Amla was taken at slip by a juggling Clarke off spinner Nathan Lyon for 17, nine balls before tea.
Both Smith and Amla were huge scalps for the Australians because of their ability to occupy the crease and bat for long periods.
Clarke declared halfway through the fourth day with James Pattinson not out 29 and Ben Hilfenhaus on 18.
Mike Hussey, chasing his third successive century in the series, was out in the over before lunch for 54 off 95 balls. It was his 29th Test half-century.
Hussey attempted to pull Morne Morkel but the ball came off high on his bat and he spooned a catch to Dale Steyn at midwicket.
Clarke, who scored 230 in the first innings, fell leg before wicket to Steyn for 38. – AFP