James van Reimsdyk scored two goals and added an assist for the visiting Flyers while Ivan Provorov chipped in with one goal and an assist.
Oskar Lindblom, Morgan Frost and Travis Konecny had the other Philadelphia goals. Bobby Brink had his first career multi-point game with two assists.
Martin Jones made 30 saves for the 23-43-11 Flyers.
Mike Hoffman, Jake Evans and Cole Caufield scored for Montreal. Carey Price made 28 saves as the Canadiens (20-46-11) extended their losing skid to seven games.
Philadelphia got on the board at 7:43 of the first period when van Riemsdyk grabbed a loose puck behind the net and banged it in from a tight angle.
Provorov gave the Flyers a two-goal advantage at 14:25 of the second period with a wrist shot from the faceoff circle. Hoffman cut Philadelphia's lead in half just over a minute later by tapping in a loose puck.
Brendan Gallagher was credited with an assist but appeared to have made a hand pass. The Flyers did not challenge the play.
Montreal tied the game when Evans deflected Jeff Petry's shot from the point at 5:28 of the second period.
Lindblom responded with a wrist shot from the left faceoff circle at 6:48 to give the Flyers a lead they wouldn't relinquish.
Ronnie Attard reached Konecny with a stretch pass and the forward gave Philadelphia its second two-goal cushion of the night at 13:02.
Noah Cates connected with Frost in front of the net at 15:36 of the third period and Van Reimsdyk tallied at 16:56 to put the game away.
Caufield notched his 19th goal of the season from a difficult angle at 17:33.