Australia, put in by England, were reduced to a parlous 97-5 shortly after lunch in Sydney but Haddin, who has been a constant thorn in the side of the tourists, was unbeaten on 59 off 79 balls at the break, with Smith on 48.
Wicketkeeper Haddin reached his half-century off 70 balls with a quick single off Ben Stokes shortly before the interval, after coming to the crease following the dismissal of George Bailey for another low score.
Bailey, likely playing for his Test place, was dismissed for just one, nibbling at paceman Stuart Broad and edging a catch to Alastair Cook at first slip, who clung on at the second attempt.
England claimed four wickets before lunch after skipper Cook won the toss for the first time in the series.
More From This Section
Stokes dismissed opener Chris Rogers (11) and skipper Michael Clarke (10) and in the final over of the morning James Anderson trapped Shane Watson leg before wicket for 43.
And Stokes claimed the big breakthrough when he coaxed an edge off Clarke to Ian Bell in the slips.
Australia lost the wicket of David Warner in the first hour, bowled by Stuart Broad for 16.
England had a setback when Test debutant Boyd Rankin pulled up with a hamstring injury bowling in his ninth over and left the ground for treatment.
Rankin was among three English changes from Melbourne, with Test debuts also for middle-order batsman Gary Ballance and leg-spinner Scott Borthwick.
England sprung a surprise by dropping Joe Root and elevating Ian Bell to number three, while Michael Carberry kept his place at the top of the order, despite concerns over his slow rate of scoring. Young leg-spinner Borthwick came in for Monty Panesar, while speedster Rankin got his chance at the expense of Tim Bresnan.