ST. PAUL, Minn. (AP) — Minnesota Wild coach Bruce Boudreau let out a big sigh. An impressive rally in an emotional game drained the veteran coach.

Eric Staal scored with 2:31 remaining to send Minnesota to a 4-2 win against the Winnipeg Jets in an edgy, penalty-filled matchup on Friday.

Nino Niederreiter, Eric Fehr and Zach Parise also scored for the Wild, who trailed 2-0 after two periods. Alex Stalock made 26 saves while filling in for Devan Dubnyk, who was scratched with an illness.

"The whole night was competitive and emotional, but especially the third period," Staal said. "Things happen in a game. You got to do your best at times to keep it even-keel. Sometimes it's more difficult than others, but you see that emotion sometimes spill over. It did on a couple plays. At the end of the night, it was fortunate for us to come out on the other side of it."

Patrik Laine scored for the sixth time in three games for the Jets, who dropped back-to-back games for the first time this season. Nikolaj Ehlers added his fifth goal of the season, and Connor Hellebuyck made 35 saves.

"Up until today, we're winning a lot more than we're losing recently, so the sky isn't falling," Winnipeg forward Blake Wheeler said. "It's just on the road there's going to be momentum changes. They're probably going to score a goal more than likely and we just got to face that adversity and do a better job of that."

A tense affair between Central Division rivals boiled over in the third.

Minnesota's J.T. Brown hit Winnipeg forward Andrew Copp into the glass near the Jets' bench, causing Copp to go to the ice. After several minutes, Copp skated off and went to the locker room.

A few minutes later, Winnipeg's Adam Lowry hit Joel Ericksson Ek with an elbow, starting a melee that ended up in the Jets' bench. Wild defenseman Nick Seeler confronted Lowry after the hit and Lowry shoved Seeler into the bench area with the door open for an expected line change. Minnesota's Marcus Foligno jumped in and both Wild players ended up on the bench.

"I haven't seen any of that kind of stuff in a long time," Boudreau said. "I'm sure I'll watch it again tonight on TV. It gets everybody whether it's the crowd or whether it gets the players or whether it gets the coaches, it gets them all revved up. That was an emotional game that was fun."

Minnesota's Ryan Suter was called for roughing later, but Staal scored after the penalty expired, notching his second straight game-winning goal.

Parise added an empty-netter to finish the flurry.

"We realized last year, we got bounced around a little bit," Foligno said. "It's not like you got to start cheap-shotting guys. It's not like that, but you got to play strong and win your one-on-one battles, and I think you saw it tonight with a lot of extra efforts from our guys."

Laine scored for the third straight game to open the scoring in the first. He leads the league with 10 goals in November, running his total to 14 for the season.

Minnesota had a power-play goal in five straight games and seven overall in that span but was 0 for 6 on Friday.

"I think we kind of let the game get away from us," Lowry said. "They got a couple good bounces and that's the difference tonight. ... I don't know if that's all the PK's in the second period or what the cause was but we weren't ourselves in the third."

Copyright 2018 The Associated Press. All rights reserved. This material may not be published, broadcast, rewritten or redistributed.