England resumed on 226-6, but Johnson struck in the second over of the morning with his first ball to remove Tim Bresnan for one, the all-rounder fending off a venomous, rising ball to give a scrambling George Bailey a simple catch at square leg.
Johnson then bowled Kevin Pietersen for 71 four balls later when the South Africa-born batsman swiped across the line in a horrible attempted slog that will do little to silence his detractors.
Stuart Broad came out swinging, smacking a pair of boundaries off Ryan Harris before nearly being caught and bowled by the seamer when on 10.
The 32-year-old Queenslander Johnson then roared in to trap Broad in front for 11, in almost exactly the same fashion as the dismissal that saw the paceman suffer a foot injury in the third test in Perth.
Number 10 James Anderson showed some defiance to block out Johnson and smacked Nathan Lyon over his head for four but the spinner soon captured the final wicket of Monty Panesar for two.
Man of the match in the first two tests, Johnson finished the innings with 5-63, but took 5-18 from nine overs with the new ball taken late on day one.
Johnson now has 10 five-wicket hauls in tests, with five coming against England and three this series.
"It's going alright," Johnson said in a pitchside interview. "I'm enjoying it. I can't take full credit for that. We bowled really well as a unit yesterday. We keep sticking to our plans and it's coming off.
"It was nice to get a wicket with my first ball, Ryan-o (Harris) set it up for me, hopefully the batters can go out there and make a few runs and I can put my feet up.
"The wicket looks good and obviously Michael's (Clarke's) call to bowl first was the right choice."
Australia hold an unassailable 3-0 lead in the five-test series.