CALGARY, Alberta - The Islanders had been beating themselves a bit in December, giving up three-goal leads four times. Perhaps they play better when the game is tighter.

That was the case Friday night, when the Islanders gave away precious little to a streaking Flames team and pulled out a 2-1 win thanks to a pair of John Tavares goals and one huge Jaroslav Halak save with a minute to go, the best of his 22 stops.

The Isles are now 7-1-1 in their last nine games and 15 games over .500 (26-11-1).

After 40-plus minutes of quietly dominating play, the Islanders gave themselves a little too much intrigue in a four-minute span of the third, with Ryan Strome taking a penalty for slashing Raphael Diaz's stick in half and then Tavares clipping Jiri Hudler in the head with his stick.

But the Islanders' 29th-ranked penalty kill was not just solid, it was strong. Halak stopped the only Flames shot of either power play, a point-blank try by Sean Monahan, and key shot blocks by Calvin de Haan and Thomas Hickey helped.

Tavares helped more with the big second goal at 12:16. He circled the net and fed Kyle Okposo, who had the puck tangled in his skates. Tavares pounced on it and snapped a short shot between Jonas Hiller's legs for a two-goal edge.

The Flames pulled Hiller with just under four minutes to go and that, plus a fortunate bounce onto rookie Johnny Gaudreau's stick, cut the Isles lead to 2-1 with 3:25 left.

The Islanders held a 1-0 lead entering the third period and it was 40 minutes played before a frequently silent Saddledome crowd. After grabbing the lead during a two-man advantage early in the first, the Isles turned the adage "good road period" into their mantra.

They worked the walls well, winning battles and clogging up passing lanes against a Flames team that had scored 14 goals during a four-game win streak coming into the game.

The Isles supported each other away from the puck, covering up for pinching defensemen to prevent any outlet plays and gumming up the slot in their own end to keep the bulk of the Flames' 16 shots through two periods from the perimeter.

The Islanders had a 44-26 edge in shot attempts, indicative of the battles won and play being controlled. The best flurry came in the closing minute of the second when Nikolay Kulemin whipped a 15-footer high over Hiller's net to close a solid minute of offensive zone time.

Halak closed off any dangerous plays that came his way and smothered a few loose pucks with red jerseys lurking.

Johnny Boychuk was involved in the only goal of the first 40 minutes in a couple ways. He tried to race onto a loose puck in behind the Flames defense in the first, only to have Lance Bouma get the puck and Boychuk's skates, in that order.

In years past that play would have been legal, so long as Bouma got the puck first. But a new rule this season called for a penalty regardless of the order of contact, so Bouma sat just 6:48 into the first.

That became a bigger problem for the Flames when Matt Stajan was whistled for a faceoff violation for using his hand to move a loose puck off the draw. No time elapsed off the clock, giving the Islanders a two-minute five on three.

Boychuk started some around-the-horn passing, to Kyle Okposo, then to Ryan Strome and finally across the crease to Tavares, who swept in his team-leading 16th goal at the 8-minute mark.