The tourists reduced the home side to 44-3 in the morning session on the first of the three-day match but a 122-run stand before tea, and another of 133 after the break, helped the Australians to 325-7 at the close of play.
Paceman Steyn, the world's top ranked bowler, finished with 3-43 from his 18 overs, while uncapped Rory Kleinveldt, the fourth quick in the South African party, ended the day with figures of 2-45.
Spinner Imran Tahir was the busiest bowler and also grabbed a brace at the cost of 114 runs, but Vernon Philander, ranked second behind Steyn in the bowling world rankings, came up empty and conceded 76 runs in his 16 overs.
Former Test opener Phillip Hughes, who hammered the Proteas bowlers in South Africa three years ago, did his campaign to earn a recall little good, making five runs at number three before chopping a Kleinveldt delivery onto his own stumps.
Another Australian looking for a Test recall, allrounder Steve Smith, made 67 before being trapped lbw by Tahir having shared a partnership of 122 with lefthanded opener Rob Quiney (85).
Even better was to come for the hosts after tea when Alex Doolan and Glenn Maxwell dug in to put on 133 runs for the seventh wicket.
Steyn, who produced the ball of the day to clean bowl opener Liam Davis, ended the partnership just before the close of play when he had Maxwell caught behind for 64 by wicketkeeper AB de Villiers.
Doolan (76 not out) and wicketkeeper Tim Paine (one not out) will resume on Saturday barring a declaration.
Morne Morkel, the third member of the likely South Africa pace attack for next week's opening Test in Brisbane, was rested for the match along with allrounder Jacques Kallis, who has been suffering from a chest infection.
- Sports & Recreation
- Imran Tahir
- Rory Kleinveldt