Ridiculed by England fans for his "s***e" bowling, Johnson claimed four for 61 with Alastair Cook and Jonathan Trott already gone before lunch, as England conceded a first-innings lead of 159 in reply to 295 all out.
Australia finished 65 for none at the close of play and now boast a lead of 224, with England's abject opening tour Test record (one win in the last 14 - in Chittagong) set to continue.
The dismissal of Kevin Pietersen, in his 100th Test, began the damaging sequence in the afternoon as all 10 wickets fell to catches against a home attack determined to exploit the bounce available here.
Ryan Harris (three for 28) and Johnson shared the first four wickets, and then off-spinner Lyon took two in two as England lost three stuck on the Australian 'bogey' score of 87.
A variation of recent history was in danger of being repeated when Stuart Broad strode out to face Lyon's hat-trick ball - he was lbw to Peter Siddle here to complete the sequence three years ago - but this time, he was not required to play at an off-break.
He did not stop there either, adding 32 runs to his six for 81 with the ball as England eked out 45 for the last two wickets.