Australia were in all sorts of trouble at 5-97, but not for the first time this summer, Haddin fought back to steady the first innings and guide the home side to 5-201 at tea.
Haddin (59 not out) and Steve Smith (48no) have put on a crucial sixth-wicket stand of 104, after Australia were sent in by England and suffered another worrying top order collapse.
Veteran wicketkeeper Haddin has now scored four half-centuries and a ton from every first innings he's played this series, and leading into this Test he'd scored 46 per cent of Australia's runs in the first dig.
Persistent rumours have suggested Haddin could retire after the Sydney Test, however the speculation has been firmly denied by his management.
The veteran wicketkeeper might be 36 years old, but he's in the form of his career.
In Brisbane, Haddin turned the momentum of the entire series when he came in at 5-100 and smashed 94.
Likewise in Perth and Melbourne, he changed the course of the match after early wickets had fallen.
Batting at No.7, he's the second highest run-scorer this series and has been crucial in Australia reaching the verge of just the third 5-0 whitewash in Ashes history.
This is the second century partnership put on by Haddin and Smith this summer.
England were in the driver's seat shortly after lunch, with Stuart Broad and Ben Stokes taking two wickets each and James Anderson chipping in with one.
Openers David Warner and Chris Rogers fell cheaply and Michael Clarke and Shane Watson went before lunch.
George Bailey was then on his way for 1 three overs into the second session and his place in the Test team appears in danger.
However, once again the tourists weren't able to get past Haddin and go on with the job.
To make matters worse, debutant fast bowler Boyd Rankin left the field one ball into his second spell, clutching his left hamstring to leave England's arsenal underdone.
Smith, who scored a century in Perth, carried on despite copping a nasty blow on the hand from Stokes.
AUSTRALIA FIRST INNINGS
C ROGERS b Stokes 11 (39)
D WARNER b Broad 16 (20)
S WATSON lbw Anderson 43 (59)
M CLARKE c Bell b Stokes 10 (29)
S SMITH not out 48 (84)
G BAILEY c Cook b Broad 1 (8)
B HADDIN not out 59 (79)
Sundries (6b 1lb 6nb) 13
Five wickets for 201
Fall: 22 (Warner), 51 (Rogers), 78 (Clarke), 94 (Watson), 97 (Bailey).
Bowling: J Anderson 15-3-35-1, S Broad 13.5-5-42-2, B Stokes 12-1-62-2 (5nb), B Rankin 8.1-0-34-0 (1nb), S Borthwick 3-0-21-0.
Batting time: 240 mins. Overs: 52.
Umpires: Aleem Dar (PAK), Marais Erasmus (RSA).