England, resuming at 226 for six, meekly succumbed to be all out for 255 with Johnson taking five for 63 in a withering four-over morning spell of three for four with two maidens.
Among the England wreckage was the wicket of Pietersen, out bowled going for a wild slog for 71 after adding just four runs to his overnight score.
In the 13 overs to lunch, Australia had reached 38 for two with Chris Rogers on 16 and Michael Clarke not out two after David Warner (9) and Shane Watson (10) went cheaply.
While Bairstow took his second catch dismissing Watson for 10 off the bowling of Ben Stokes.
Also Read
The wickets of Warner, who scored centuries in Brisbane and Perth, and Perth centurion Watson gave England some encouragement after a below-par first innings total.
Johnson now has taken 28 wickets at 14.96 for the series.
He had a double-wicket breakthrough in his opening over of the day, removing Tim Bresnan (1) and Pietersen (71).
Bresnan received a brutish rearing delivery first-up and he fended it away in an act of self-preservation to George Bailey at short leg.
Pietersen, who passed Geoff Boycott as the fourth all-time England run-getter on the opening day, batted for 254 minutes before he became Johnson's fourth dismissal of the innings. Johnson then trapped Stuart Broad leg before wicket for 11.
Monty Panesar, who took an eye-watering blow in the groin from paceman Peter Siddle, was the last wicket to fall.
England's 255 was their highest first innings total in a poor-scoring series after 136 in Brisbane, 172 (Adelaide) and 251 (Perth), but still low to apply sustained pressure on the home side.