The beleaguered tourists, with the Ashes already lost, boosted their chances of averting a 5-0 series clean sweep with a rare rewarding day in the field as they defended what had appeared to be a below-par first innings total of 255.
But disciplined bowling and fielding stifled Australia's scoring and with it the wickets tumbled to put the home side under pressure on a slow-paced MCG pitch.
At the close, Australia were 164 for nine, trailing England by 91 runs with Brad Haddin on an unbeaten 43.
England were restricted in their first innings by a hostile spell from Mitchell Johnson, but the Australians also laboured for runs with veteran opener Chris Rogers crawling to his third half-century of the series and wicketkeeper Haddin again defying England.
Captain Alastair Cook's tactics of drying up the runs reaped rewards with the cheap dismissals of David Warner (9), Shane Watson (10), Michael Clarke (10), Steve Smith (19), George Bailey (0), Johnson (2), Ryan Harris (6) and Peter Siddle (0).
Led by pacemen Jimmy Anderson with three for 50 and Stuart Broad three for 30, England tied up the vaunted Australian batsmen and looked set for what could prove a significant innings lead on a pitch which is expected to play harder through the Test match.
In the 13 overs to lunch, after polishing off England's last four wickets, Australia lost Warner and Watson.
Warner top-edged Anderson high into the air to give wicketkeeper Jonny Bairstow a straight forward catch and Watson was snapped up behind off Ben Stokes.
Anderson surprised Clarke with a delivery that shaped back in and collected the top of off-stump. The Australia skipper was pinned down with his 10 runs coming off 34 balls.
England's bowling frustrated Smith trying to cut too close to his body and edged Broad to Ian Bell in the slips for 19 off 77 balls.
Rogers followed soon slicing to Kevin Pietersen who took a fine running catch at mid-wicket.
The veteran opener had batted for 224 minutes and faced 171 balls for his 61, his third half-century of the series.
George Bailey was out for a painstaking duck off 19 balls after a long-winded review for a catch behind off Anderson.
Bailey had clobbered Anderson for 28 runs off one over in the third Perth Test in an unbeaten knock of 39 but he was marooned by the English paceman who coaxed him to swing his bat at a wide delivery.
Johnson was caught by Anderson off Bresnan for two, Harris fell to a catch at short-leg off Broad for six and Siddle was out in the day's last over to the same bowler.
England, resuming at 226 for six, meekly succumbed adding only 29 more runs to be all out with Johnson taking five for 63 in a withering four-over spell of three for four.
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.
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 Bresnan (1) and Pietersen.
Bresnan received a brutish delivery first-up and he fended it away in an act of self-preservation to Bailey at short leg.
Pietersen, who batted cautiously on the opening day for his 67 off 152 balls, added a streaky boundary off Harris before he fell to Johnson, four balls after Bresnan's dismissal.
Pietersen, who passed Geoff Boycott as the fourth all-time England run-getter, went for a lusty swing and Johnson knocked back his middle stump.
Johnson then trapped Broad leg before wicket for 11 and Panesar shouldered arms to spinner Nathan Lyon and was bowled for two leaving Anderson 11 not out.