Carey Price, who has started all but one of Montreal's 13 games this season, made 29 saves to help the Canadiens improve to 8-4-1 and snap a two-game losing streak.
Montreal was without scoring leader Tomas Plekanec, who was scratched because of flulike symptoms.
Mike Grier had a goal and assist, Jordan Leopold also scored, and backup goalie Patrick Lalime, playing in place of injured starter Ryan Miller, made 29 saves for the Sabres, 0-6-1 at home and 3-9-2 overall.
Miller wasn't in uniform for the second straight game because of a lower-body injury, and also will sit out Saturday night when the Sabres play at Toronto.
Grier opened the scoring with his first goal of the season with 2:42 left in the first period. Off an odd-man rush, Grier accepted a pass from Tyler Ennis in the lower portion of the right circle, pulled the puck to his backhand, and slid it past Price.
The Canadiens tied it 1:22 later when Halpern snapped in a shot from the slot.
Buffalo regained the lead 9:02 into the second when Leopold swatted home a loose puck during a scramble in front, but Pouliot tied it at 2 just 46 seconds later when he pushed the puck in on the backhand from in tight.
Pouliot gave Montreal its first lead with 2:48 left in the second when he let go a wicked slap shot from the left circle that went in on the short side.
NOTES: Buffalo RW Drew Stafford missed most of the second period and all of the third after sustaining an upper-body injury. ... The last time the Sabres started a season without a win in their first seven games at home was in 1993-94. ... Sabres coach Lindy Ruff coached his 998th NHL game. ... Montreal LW Mathieu Darche had a pair of assists. ... Buffalo's Jochen Hecht and Rob Niedermayer are the only two Sabres forwards who have played at least 13 games without scoring a goal. ... Plekanec ranks second on Montreal with five goals. ... The Canadiens will play six of their next seven at home, where they have a 3-2-1 mark.