Having staggered to 116-4 at lunch, England walked into a fire storm after the break as Johnson took 3-0 in the second over his spell and returned to clean up the tail with three more wickets.
England were still 199 runs short of the follow-on and 398 runs shy of Australia's declared first innings total of 570-9 but Australia captain Michael Clarke elected to bat again to give his bowlers a rest.
Johnson, man-of-the-match in the first Test in Brisbane, started one of the great spells of Ashes bowling by removing Test debutant Ben Stokes lbw for one, the wicket confirmed by review after it was initially given not out.
The 32-year-old Queenslander then had Matt Prior caught behind for a duck by his fellow wicketkeeper Brad Haddin and then bowled paceman Stuart Broad for a first-ball duck.
Broad's wicket put Johnson on a hat-trick and while Graeme Swann fended away the next ball awkwardly, the fired-up Johnson returned to take the spinner's wicket when Swann slashed a thick edge which Clarke caught brilliantly in the slips.
Johnson then bowled paceman James Anderson for another first-ball duck, pegging back his middle-stump for a second attempt at a hat-trick.
Playing a lone hand for England, Ian Bell only just survived the hat-trick ball, his shot falling only a few feet shy of a man at short extra cover.
Bell survived a review for lbw off Ryan Harris and raised his half-century off the next ball with an elegant cut through point for four.
Bell then bashed another two boundaries and a six in the over for good measure as number 11 batsman Monty Panesar showed courage under fire to help his partner add 37 for the 10th wicket.
Having dived to his right and plucked the ball out of the air to remove Swann, Clarke made a mess of a simple chance when Lyon coaxed a thick edge off Panesar to first slip.
But Johnson emerged again to bowl Panesar for two and finish with outstanding figures of 7-40 from his 17.2 overs, having also captured the key wicket of captain Alastair Cook late on day two.
Australia earlier captured three wickets in the morning, with Lyon removing England's Joe Root for 15 before paceman Peter Siddle sparked delirious cheers by capturing the key wicket of Kevin Pietersen for four.
All-rounder Shane Watson removed opener Michael Carberry for 60 in the third-last over before lunch after four successive maidens had raised the tension to boiling point.