Jonny Bairstow kept his head with a fine century for England but Steve Smith showed a captain's poise to guide Australia to 203-3 at the close of Day 2 of the third Ashes Test on Friday.
Smith was on 92 at stumps and Shaun Marsh on seven, with the home side, already 2-0 up in the five-match series, having trimmed England's first innings lead to 200 runs.
Bairstow marked his first Ashes ton with a cheeky celebration before lunch, nudging his head against his helmet in a nod to his infamous "headbutt" of Australia opener Cameron Bancroft.
The wicketkeeper's sparkling 119 helped push England to 403, their highest innings total in Australia since January, 2011.
However, England's joy was tempered by the runs that went begging, having lost six wickets for 35 runs in the final 10 overs of the morning session to leave the door well and truly open for Australia.
Smith opened it wider with an innings of typical poise, anchoring a 124-run partnership with Usman Khawaja after seamer Craig Overton removed openers David Warner (25) and Cameron Bancroft (22).
The game remains evenly poised but England's hopes of containing Smith and Australia may have suffered a blow when Overton sustained an apparent injury in his chest area.
England also rued some poor fielding with Khawaja reprieved on 39 after he nicked behind and a lead-footed Joe Root appeared to completely miss the flight of the ball.
Two overs later, Smith struck a sumptuous cover drive for four to bring up his half-century and stepped up a gear to make Root pay.
Khawaja drove into the covers off Moeen Ali to bring up his 10th Test half-century but was trapped lbw by Chris Woakes on the next ball he faced.
Western Australian Marsh played watchfully to stumps and Australia remain well-positioned to eat into England's lead on Day 3.
Promoted up the order to No 6, Bairstow shared in a 237-run stand with Dawid Malan, the highest by an England pair at the Waca and their best fifth-wicket partnership ever in Australia.
Spinner Nathan Lyon broke the stand, forcing Malan to miscue his shot high into the air to be caught for 140.
His dismissal triggered a breathtaking collapse, with Mitchell Starc finishing with 4-91 and Josh Hazlewood 3-92.
After raising his hundred, Bairstow's batting partners fell around him quickly, with Pat Cummins having Moeen caught by Smith at first slip for a duck, and Woakes then snaffled in the deep for eight off Hazlewood.
Starc ended Bairstow's 215-ball innings by removing his middle stump in the following over, with Hazlewood dismissing tail-ender Overton for two.