Johnny Gaudreau returned after leaving with an apparent injury and put Calgary ahead late to spoil Rasmus Ristolainen's hat trick in the Flames' 4-3 win over the Buffalo Sabres on Thursday night.

Gaudreau exited in the first period after a collision but returned for the second. In the third period, he worked a give-and-go with Sean Monahan, then zipped a low shot through Chad Johnson's pads with 4:50 left for the 4-3 lead.

Monahan had two goals and an assist, and Markus Granlund also scored in Calgary's fourth straight win. Jonas Hiller stopped 27 shots.

Ristolainen scored three goals in the final period, including a tying tally with 5:45 remaining. That one came when he banked a shot from the corner off the skates of Flames defenseman Dennis Wideman and past Hiller.

Monahan has seven points (three goals, four assists) in his last four games, all of them victories as Calgary enjoys its longest winning streak of the season.

The Flames have won eight in a row at home for the first time since Feb. 23 to March 27, 2013. The franchise record is 10 straight.

Johnson turned away 28 shots.

In the six-team logjam behind Los Angeles in the Pacific Division, the Flames are tied with Edmonton for fewest points, yet are just four points back of second-place Vancouver and with two games in hand.

The Sabres were 3-0-1 in their previous four games before heading to Western Canada for a three-game trip, but return home having lost all three games, including losses to the Canucks and Oilers.

Monahan opened the scoring at 5:46 of the second period. Brandon Bollig began the sequence with a pass back to Wideman at the blue line. His shot was stopped, but Monahan picked up the loose puck and fired into the net.

With 8 seconds left in the second, Granlund gave Calgary a two-goal cushion by converting a setup from Joe Colborne for his third goal in the last five games.

Ristolainen erased the Flames' lead with a pair of power-play goals to open the third.

Monahan's go-ahead goal at 9:25 came on a setup from Gaudreau, who found him alone in front. From there, he fired his 10th of the season.

It was only Hiller's second start since the end of October. He gave up five goals on 29 shots in a loss to San Jose on Nov. 28.

Karri Ramo was supposed to start his 16th game in his last 17 but came down with a worse flu than what was already ailing Hiller, who had to leave practice early on Wednesday and was not on the ice at the morning skate Thursday.

Notes: Jiri Hudler (flu) was a scratch for Calgary. In his absence, Bollig played for the first time in six games. ... Flames coach Bob Hartley coached career game No. 890, moving him ahead of Punch Imlach and into 31st on the NHL career list.