The Dogs won the match 11.14 (80) to 9.11 (65) after a scoring burst in the dying stages of the last quarter put them clear of the determined Kangaroos, who had whittled a 28-point lead down to two in just over a quarter.
Goals to Josh Hill and Lindsay Gilbee in red time of the fourth term secured the win for the Dogs after the Roos had stolen the momentum and were within a straight kick despite trailing by 10 points at the final change.
It is the first time the Bulldogs have beaten the Kangaroos at the MCG since 1999.
It was the AFL's Emergency Services Appreciation Game, which was designed to honour the men and women of the emergency services and support organisations in the wake of the recent bushfires.
A video tribute was shown before the match and service representatives were on the field for a rendition of "I Am Australian" before the bounce.
The heartfelt tribute was followed by a bruising contest played at a cracking pace, with some flashy footwork from both sides defying the greasy conditions.
The Dogs lost defender Tim Callan before the game for Jarrod Harbrow, while elevated rookie Liam Picken was named to start on the field for his first game.
Picken was given the tough task of curtailing Brent Harvey and handled himself with aplomb, keeping the Roos' captain to 18 touches.
Brad Johnson was sensational for his side with three goals and Brian Lake was creative in defence, while Ryan Griffen racked up 30 possessions.
Goals were hard to come by in the wet and the first major wasn’t scored until seven minutes into the first term.
After a spate of points, Johnson nailed the opener after marking deep in the pocket, followed four minutes later by Daniel Giansiracusa’s brilliant goal from outside 50.
Johnson snared another when he marked in front of Josh Gibson two minutes later as the Kangaroos looked like going goalless.
Former skipper Adam Simpson came to the rescue late in the first quarter, kicking truly after a mark with 30 seconds left to leave his side 13 points down.
The Roos drew first blood in the second term through Matt Campbell, and a behind five minutes later had his side within eight points.
The Bulldogs got their first when Callan Ward gathered the ball hard up on the wing ran clear before punting it in front of Johnson and Gibson. The ball was knocked free and Johnson won a foot race with Lachie Hansen to scoop it up and guide it through.
Again, the Roos rallied and snared a late soccer-style goal through Daniel Wells, which left the Bulldogs 10 points clear at half time.
The Dogs opened the second half with four of the first five goals to move 28 points clear, but a late flurry to the Roos had them back within 11 at the final change after David Hale combined with small duo Lindsay Thomas and Campbell for three goals.
North Melbourne continued to chip away at the Bulldogs during the final term and when Hamish McIntosh goaled after a Harvey torpedo forward, the margin was just two points with eight minutes to go, before Hill and Gilbee combined to seal the game.
The Bulldogs will now play Richmond on Easter Monday while the Kangaroos face Hawthorn on Sunday, with both games to be played at Docklands.
Western Bulldogs 3.6 4.10 8.13 11.14 (80)
North Melbourne 1.5 3.6 7.8 9.11 (65)
GOALS
Western Bulldogs: Johnson 3, Hill 3, Giansiracusa, Minson, Addison, Griffen, Gilbee
North Melbourne: Campbell 2, Thomas 2, Simpson, Wells, Swallow, Hale, McIntosh
BEST
Western Bulldogs: Johnson, Griffen, Lake, Boyd, Picken, Hill
North Melbourne: Harding, Simpson, McIntosh, Campbell, Thomas, Wells
INJURIES
Western Bulldogs: Callan (back) replaced in selected side by Harbrow
North Melbourne: Nil
Reports: Nil
Umpires: Grun, Meredith, McInerney
Official crowd: 34,466 at the MCG
The views in this article are those of the author and not necessarily of the clubs or the AFL.