Carey Price made 14 saves and Marc-Andre Bergeron also scored for Montreal, which won its second in a row following an 0-3-1 skid despite managing just 13 shots, including one in the opening period.
Each team set a franchise record for fewest combined shots in a game with 28. The Flyers held a 15-13 edge overall.
"It felt a little bit weird out there," Cammalleri said. "I don't know what it looked like watching but it felt a little weird, like both teams were playing possum a little bit. Hey, we won the game."
Philadelphia had a franchise-low 13 shots against Washington on Dec. 11, 1990, combining with the Capitals for 29 shots, the Flyers' previous low for both teams in a game. The Canadiens' previous combined low was 31 when they were held to 14 shots in a 5-2 win at Calgary on New Year's Eve 1993.
"Both teams played a tight battle so it was hard to really generate much offense," Price said. "Both teams were doing a great job of trapping it up. Our team blocked everything -- I don't know about their guys but our guys blocked a lot of shots tonight."
Cammalleri, who signed a five-year contract as a free agent on July 1, scored for the fourth time in two games in the second. He got his second hat trick of the season Friday as the Canadiens celebrated their 100th anniversary with a 5-1 win over Boston.
"I think our last two games we've played our best defensive hockey of the year," Price said.
Daniel Briere scored an unassisted goal in the first for Philadelphia, which lost its fifth in a row, including an 8-2 loss to Washington on Saturday in Peter Laviolette's debut behind the Flyers' bench.
Philadelphia has lost each of its first two games since Laviolette took over from former head coach John Stevens, fired Friday in the wake of the Flyers' second shutout loss in a row.
"We played two decent periods of getting the puck in deep, grinding on their defense, grinding on their forwards, and created some decent scoring opportunities through that," Flyers defenseman Chris Pronger said. "But the few turnovers we made cost us one goal and then our inability to get the puck in deep in the third period didn't allow us to get any cycles and any of that grind game going."
Brian Boucher stopped 10 shots in his sixth appearance -- including four starts -- in seven games.
"It really was hard to get into a rhythm out there," Boucher said.
Max Pacioretty got credit for Montreal's only shot of the first at 6:18.
Philadelphia didn't generate much more offense in the opening period, but Briere managed to convert one of the Flyers' four shots.
The slick center flicked the puck past Price 7:28 in despite being hauled down on a breakaway by Montreal defenseman Ryan O'Byrne, who was called for a delayed penalty that ultimately went unrecorded on the scoresheet.
Tomas Plekanec finally delivered the Canadiens' second shot of the game 5:51 into the second.
The Czech center went one better moments later when he set up shop behind the Flyers' net before threading a pass to Kostitsyn, who was left unmarked in the slot to swat the puck past Boucher for his third goal.
"He fanned on it and I kind of went out after it," Boucher said. "That's just the way it's going right now."
Cammalleri put Montreal ahead at 14:04 when he finished off a 2-on-1 with Maxim Lapierre.
Georges Laraque got his 100th career assist on Cammalleri's goal. Laraque, who fought Riley Cote 2:45 in, appeared in his second game since serving a five-game suspension for his knee-on-knee hit on Detroit's Niklas Kronwall.
"If somebody would have told me when I started playing in the NHL that I would get 100 assists I wouldn't have believed it," said Laraque, who has 152 points and 1,119 penalty minutes in 679 regular-season games with Edmonton, Phoenix and Montreal. "I think for what I do it's a huge milestone."
Canadiens defenseman Paul Mara left the game with an upper body injury in the second. He did not return.
Bergeron, who started the game as a forward on the fourth line, moved to defense after Mara's injury and scored his sixth of the season on a power play.
The Canadiens have been held to a franchise-low 12 shots in a game twice within the last seven years, including a 3-0 loss in Ottawa on Jan. 26, 2006. ... Boucher allowed three goals on 13 shots after relieving Ray Emery midway through Saturday's loss. ... Cammalleri led Calgary with a career-high 39 goals last season.