WINNIPEG -- Gabriel Vilardi scored his first NHL hat trick, and the Winnipeg Jets clinched a berth in the Stanley Cup Playoffs with a 5-2 win against the Calgary Flames at Canada Life Centre on Thursday.

“A great night for me, but a better night for the team,” Vilardi said. “Make the playoffs. Still got a long way to go. A lot of work that needs to be done still. But definitely a good night."

Nikolaj Ehlers had a goal and an assist, and Tyler Toffoli also scored for the Jets (46-24-6), who have won their past two games after dropping six straight. Connor Hellebuyck made 31 saves, and Josh Morrissey had two assists. Winnipeg remained six points ahead of the Nashville Predators for third place in the Central Division and four points behind the Colorado Avalanche for second. 

“There was never any doubt in my mind that we’d make the playoffs this year,” Jets coach Rick Bowness said. “We’ve got a good team here. And we’ve got a good bunch of guys. So there was never any doubt. It’s nice to put that behind us. And now we push forward.”

CGY@WPG: Vilardi scores three goals to lead Jets to win

MacKenzie Weegar had a goal and an assist, and Dustin Wolf made 40 saves for the Flames (34-36-5), who have lost seven of eight.

Calgary was eliminated from playoff contention with the loss.

“I thought the effort is what we want to see,” Flames coach Ryan Huska said. “Five-on-five, I liked our game. I thought their power play was good tonight. They had a lot of chances off their power play, but I was pleased with the way we came out and played tonight. And it was really a total opposite of our last game (4-2 loss to the Los Angeles Kings on Tuesday) so that’s what we need to see.”

Weegar gave the Flames a 1-0 lead with a power-play goal at 4:35 of the first period. Jonathan Huberdeau found Weegar in the high slot, and he scored with a wrist shot.

“It [stinks]. I mean, everybody wants to chase the Cup, that’s what it’s all about,” Weegar said. “Some teams are ramping it up right now to go on a big playoff run and some teams are looking out, which is disappointing.”

CGY@WPG: Weegar finishes Huberdeau's feed for PPG in 1st period

The Jets then scored two goals in a span of 1:57. Vilardi tied it 1-1 on the power play at 12:59 when Kyle Connor set him up with a slap pass, and Ehlers made it 2-1 at 14:56 when Cole Perfetti found him with a cross-slot pass that Ehlers quickly slid under Wolf.

Winnipeg went 2-for-4 on the power play after having gone 1-for-23 in its previous seven games.

“We did a lot of good things,” Morrissey said. “You’re going to need both (power-play) units down into the playoffs now so it's nice. We didn't execute as well as we probably could have on the five-minute power play, but I don't think that killed our momentum at all. Yeah, I felt like it's nice to see a couple go in and we'll keep working on it to keep trying to make it a strength of our team.”

Daniil Miromanov tied it 2-2 at 10:34, deflecting Weegar's point shot.

“Penalties killed us, for sure,” Miromanov said. “These guys are the best players in the world and if you get a penalty, they’ll punish you. … Our discipline was slipping away from us. It’s really frustrating and everybody’s battling so hard and it just [stinks] to lose those games, and I feel like most of the game we have it, and it slips away from us. We have to keep building on that.”

Toffoli restored the Jets lead with a power-play goal at 15:35 to make it 3-2.

“[Wolf] played amazing. He plays his heart out every single night,” Miromanov said. “We have to help those guys and be ready in the defensive zone.”

CGY@WPG: Toffoli puts Jets in lead with PPG in 2nd period

Vilardi extended it to 4-2 at 8:44 of the third period, batting down Morrissey’s shot and banging it in, before scoring into an empty net at 18:56 for the 5-2 final.

“I'm not the coach but I'd say we've got to clean up things,” Vilardi said. “We are having breakdowns where I feel we're getting outworked for not a few shifts, but for the whole period and we can't have that. There's definitely parts of the game where we are dominating. You can see it. And then we just kind of lose it. We have to find a way to narrow that down. We're not going to have a perfect 60 minutes but we can't have 20 minutes of having [Hellebuyck] stand on his head. Definitely got to clean things up. We know how good we are when we play to our standards. Gotta clean things up too.”

NOTES: Jets center Adam Lowry left the game in the third period after taking a hit from Flames center Kevin Rooney. “He’s fine,” Bowness said of the Winnipeg captain. “I just talked to him. He’s good. He was surprised they put him in that concussion protocol. But he’s fine.” … Weegar has eight points (three goals, five assists) during a five-game point streak. … Weegar’s goal was his 19th, leaving him one shy of becoming the first Flames defenseman to score 20 in a season since Mark Giordano (21 in 2015-16). … Flames forward Andrei Kuzmenko has seven points (four goals, three assists) during a four-game point streak and has scored nine goals in 22 games since he was traded from the Vancouver Canucks on Jan. 31.