Mikko Koivu, Jarod Palmer and Pierre-Marc Bouchard also scored for the Wild, who went 0-5-3 after a seven-game winning streak. Niklas Backstrom improved to 16-0-0 at Xcel Energy Center in his career against the Oilers, the best record of any NHL goalie at home against a single opponent.
Marek Zidlicky had three assists and fellow defenceman Greg Zanon had two for the Wild, whose 17-game home winning streak against the Oilers ended on Nov. 25. The Oilers have lost six straight road games since. They fell to 3-8 in December.
Taylor Hall, Ladislav Smid and Shawn Horcoff scored for the Oilers, who have lost six of their past seven games. Their only win was against the Wild last week.
Hall scored just 84 seconds into the game, but Koivu tied it with a slick backhand fake on defenceman Tom Gilbert, skating across the slot for a forehand.
Then there was Palmer's first NHL goal midway through the second period and Bouchard's 19 seconds later, nearly identical scores that zipped past the glove-side shoulder of Nikolai Khabibulin.
Smid sneaked through the back door for a tap-in that cut the lead to 3-2, but Heatley answered with his team-high 12th goal 46 seconds later to stretch the lead. Six of the first 33 shots on net went in. Khabibulin was pulled for Devan Dubnyk for the start of the third.
Horcoff scored early in the final period to pull the Oilers within 4-3, and they had a power play with 1:23 left after Justin Falk was called for interference when Hall went down along the boards. That was the 19th penalty of the game, for 68 minutes, but the Wild tightened up and killed off the power play for the victory.
In the last game between these teams as Northwest Division opponents — realignment next season will send Minnesota to a new grouping — the action was every bit the essence of a real NHL rivalry.
The Wild have had many more fights and tight finishes with fellow division foes Colorado and Vancouver, but the Oilers played them like they hated them this past week.
There were plenty of tussles in their game in Edmonton last week, and this one was just as tense.
Matt Kassian fought Darcy Hordichuk twice, both times taking down the Oilers enforcer. He pumped his arm after the first one to encourage the fans and twirled his finger after the second one as he skated off.
Hall was upset with Wild defenceman Nate Prosser for messing with him and fellow franchise cornerstone Ryan Nugent-Hopkins, and Hall and Prosser yelled at each other from their seats in the penalty box in the first period.
Wild bruiser Brad Staubitz took a hit from Theo Peckham and dumped him over the boards into the Oilers bench, drawing a loud roar from the sellout crowd, and even the goalie got into the fray.
Backstrom wrapped his arm around Ryan Jones — jockeying for position in the crease — at one point in the third period and slammed him to the ice. Backstrom was called for roughing, but a bewildered Jones got two minutes for goaltender interference.
Ryan Smyth took a swing at Backstrom as the game ended, resulting in yet another skirmish on a wild night.
Notes: RW Ales Hemsky returned for the Oilers after missing the past two games because of an illness, but his fellow alternate captain, D Ryan Whitney, sat out for a second straight game due to an ankle problem. ... The Wild improved to 13-0-3 when leading after two periods.