Hawthorn secured a home qualifying final and all but put North Melbourne out of September contention with a hard-fought 14-point win.
The Hawks were in big trouble during the first half, but rallied to beat the Kangaroos 17.15 (117) to 15.13 (103) on Saturday at Etihad Stadium.
Captain Luke Hodge starred in defence for Hawthorn, while Lance Franklin kicked five goals.
Jarryd Roughead remains among the leaders for the Coleman Medal with four goals.
The win means Hawthorn cannot finish lower than second, while the Kangaroos' slim finals hopes took a massive hit.
North Melbourne midfielder Daniel Wells was outstanding with 27 possessions, while Ben Cunnington (25 disposals) and Jack Ziebell were also terrific.
North coach Brad Scott said the Roos had entered the game intent on attacking the Hawks and had done so – just not for long enough.
"It's the first time that defence has played together and I thought they did a terrific job in playing our system against theirs, and I think it held up pretty well," Scott said.
"But it's incredibly frustrating because we put ourselves in a winning position. I thought we did enough to win the game. Again, it's twice in a row against Hawthorn that we've won the inside 50 count.
"But we're not going to be the side we want to be unless we are more focussed on playing our way for the entire game. And there were times today when we went away from what makes us a good side and you end up with the result (we got)."
Hawthorn's Luke Breust kicked the first goal of the game after two minutes, but North Melbourne quickly responded with three of their own.
The Kangaroos' intent was clear - run the Hawks off their feet.
PRESS PLAY above to watch the match highlights | YouTube
A goal to Roughead at the end of the first term reduced the margin to two points.
But the Hawks lost Liam Shiels with an ankle injury early in the second quarter.
Their problems compounded as the Kangaroos took control of the match with three goals.
Then veteran Brent Harvey celebrated his latest one-year contract extension by first landing a heavy knock on Brian Lake and then running around the Hawks' defender for a big goal.
That gave the Kangaroos a 26-point lead at eight minutes, their high-water mark for the game.
North Melbourne's mistakes, plus some dubious umpiring decisions and a growing sense of desperation among the Hawks, stopped the surge.
'Roos coach Brad Scott was furious when Franklin blatantly pushed opponent Michael Firrito in the back, but was not penalised.
Franklin then kicked a crucial goal as the Hawks went into halftime trailing by 13 points.
The free-kick count at halftime was 13-6 Hawthorn's way and 20-12 for the game.
North's relentless attempt to control the match meant the Hawks only had 138 disposals in the first half to 211 for the Kangaroos.
With the game in the balance, Hodge was superb across half-back at the start of the third term.
He took several intercept marks as North Melbourne pressed, but only managed one goal.
A superb spoil from Hodge at 12 minutes led directly to a Hawks counter-attack and a second goal to Breust - putting them in front for the first time since the opening term.
With coach Alastair Clarkson issuing urgent instructions from the interchange bench, Hawthorn kicked seven goals to four in the third term and led by seven points at the final break.
Cyril Rioli was among several Hawthorn players who lifted noticeably after halftime.
The Kangaroos again had their chances at the start of the final term, but only managed two behinds.
Goals to Roughead and Franklin gave Hawthorn a crucial break and they held on as North kicked 1.4 for the term.
Rioli gave Hawthorn a scare when he limped off midway through the last quarter, but the ankle injury apparently was not serious.
NORTH MELBOURNE 4.4 10.8 14.9 15.13 (103)
HAWTHORN 4.2 8.7 15.10 17.15 (117) GOALS
North Melbourne: Black 2, Goldstein 2, Ziebell 2, Bastinac 2, Wright, Wells, Jacobs, Thomas, Harvey, Mullett, Macmillan
Hawthorn: Franklin 5, Roughead 4, Breust 3, Rioli 2, Smith, Hill, Hale
BEST
North Melbourne: Wells, Cunnington, Wright, Harvey, Ziebell, Goldstein
Hawthorn: Hodge, Mitchell, Franklin, Roughead, Lake, Rioli, Stratton, Smith
INJURIES
North Melbourne: Adams (knee) replaced in selected side by Sierakowski
Hawthorn: Lewis (corked hip) replaced in selected side by Shiels, Shiels (ankle)
SUBSTITUTES
North Melbourne: McKenzie replaced Tarrant in the third quarter
Hawthorn: Hill replaced Shiels in the second quarter
Reports: Nil
Umpires: Farmer, Kamolins, Mitchell
Official crowd: TBA at Etihad Stadium