Australia's top order again found itself in trouble as the home side slumped to 143-5, before Smith and Haddin steadied the ship.
At tea, Australia were 220-5, with Smith on 58 and the in-form Haddin on 35, as the pair put on 77 runs for the sixth wicket.
Australia lead the five-Test series 2-0 after big wins in Brisbane and Adelaide, and can secure the Ashes with victory in Perth.
However, the home side found themselves in trouble after captain Michael Clarke won the toss and elected to bat on a sweltering day.
Also Read
Paceman Stuart Broad (2-54) was also in the wickets having George Bailey caught on the boundary hooking for just seven.
All of the Australian batsmen fell to poor shots, other than opener Chris Rogers, who was run out at the bowler's end for 11 by a direct hit from Jimmy Anderson at mid-on.
Warner, who was dropped on 37 during a frenetic first session of play, cut a Swann ball straight to Michael Carberry at backward point just after lunch.
Australia named an unchanged line-up with pace bowler Ryan Harris selected despite struggling with a sore knee in the lead-up.
The tourists made just one change from the team beaten in the second Test in Adelaide, with seamer Tim Bresnan returning from an injury lay-off at the expense of spinner Monty Panesar.