Rasmus Andersson had a goal and two assists, and Matt Coronato and Morgan Frost each had a goal and an assist for the Flames (6-13-3), who won for just the second time in their past seven games (2-4-1). Devin Cooley made 28 saves for his first win with Calgary.
Tage Thompson and Mattias Samuelsson scored, and Colten Ellis made 29 saves for the Sabres (7-9-4), who had won two straight.
Frost put Calgary ahead 3-2 at 2:02 of the third period when he took a cross-crease pass from Jonathan Huberdeau at the right post and slid it past Ellis.
Mikael Backlund pushed a puck from the slot stick side to increase it to 4-2 at 7:34. Farabee won a race to a loose puck for a partial breakaway to extend it to 5-2 at 9:50.
Coronato’s shot from in front bounced off the end glass, dropped behind Ellis, then went in off his right leg at 17:49 for the 6-2 final.
Andersson gave Calgary a 1-0 lead at 5:58 of the first period. Ellis couldn’t corral a rebound and a pinching Andersson put a wrist shot under the bar from the bottom of the right circle.
Farabee made it 2-0 when he was in front of the net to direct Nazem Kadri’s centering pass through Ellis’ pads at 12:04.
Samuelsson cut it to 2-1 at 10:21 of the second period, intercepting Yan Kuznetsov’s clearing pass along the right wall and taking it to the face-off dot before beating Cooley with a snap shot short side.
Thompson took a pass from Samuelsson above the right circle and one-timed it off the post and in to tie it 2-2 at 15:57.