Kumar Sangakkara provided a brief glimmer for Sri Lanka as Australia carved through the visitors to put them out for 156 on the first day of the second Test.
Johnson puts Australia in charge as Sangakkara joins 10,000 runs club
The reinvigorated Johnson was ably supported by a brace each from Peter Siddle, Nathan Lyon and debutant Jackson Bird.
David Warner then smashed a 46-ball 62 to get Australia up and running in their pursuit of a first innings lead - something that now looks a certainty, despite Sri Lanka taking three wickets before end of play.
Had their own score been a better one that would have been respectable but, with such a failure on the board, they already look up against it, but only have themselves to blame.
The Australia pace attack got a bit of movement out of the pitch during the first session, but Sri Lanka were let down by a series of poor shots and Kumar Sangakkara was the only batsman to look comfortable.
The Sri Lankan's 195-minute knock was eventually brought to an end with a stunning running catch by wicketkeeper Matthew Wade at eight wickets down.
In the process Sangakkara was the equal-fastest to the 10,000 milestone, reaching it in his 195th Test innings, the same as Sachin Tendulkar and Brian Lara.
Sangakkara unfurled a glorious cover drive boundary off Johnson in the final over before lunch to bring up the milestone in his 115th Test match.
But the elegant left-hander was out to a magnificent running catch behind the wicket by wicketkeeper Wade, who scampered 30 metres before flinging himself to take a diving catch and deliver Johnson his 200th wicket in his 49th Test.
Sangakkara's patience at the crease and ability to punish anything loose was the only highlight of a poor batting performance from the tourists as questionable shot selection led to many of his teammates' demise.
Bird (two for 32) had his first Test victim with the 22nd delivery of the morning when Dimuth Karunaratne (five) came forward to a ball on a good length, but was only able to edge one through to Wade behind the stumps.
The usually reliable Tillakaratne Dilshan (11) was guilty of the worst shot of the day as he attempted to hit a booming straight drive off Johnson, only to inside edge it onto his off stump to reduce Sri Lanka to 19 for two.
Siddle (two for 30) made it 37 for three shortly after when Mahela Jayawardene (three) nicked one through to Wade, before Sangakkara combined with Thilan Samaraweera to take the score through to 79 for three at lunch.
Bird, who had bowled intelligently during his first stint in the morning, had his second wicket with the third ball after lunch when Samaraweera (10) lofted a short one and Angelo Matthews (15) came and went moments later as the wickets continued to tumble around Sangakkara.
A Prasanna Jayawardene (24) cameo gave Sri Lanka some hope, but when he got a ripper from Johnson and Dhammika Prasad fell the very next ball for a duck, the tourists were 134 for seven and in all sorts of trouble.
Lyon (two for 23) came in to clean up the tail with ease and Australia - with captain Michael Clarke having passed a fitness test before the start of play - set about making hay.
Warner and Ed Cowan raced out to 95 before the former found the hands of Prasad at midwicket off the bowling of Andrews, with Phil Hughes then doing little to enhance his credentials as a number three by getting caught out of his ground by Dilshan when on 10.
Another wicket followed when Cowan nicked Prasad to Mahela Jayawardene at second slip, and Australia looked to be reeling when Shane Watson edged the same man to Prasanna Jayawardene, only to see a one-handed attempt at a catch go to ground.
The reprieve stopped the slide and Watson (13no) and Clarke (20no) saw things through to the finish.
Follow us @SprtNationalUAE