Ian Cole, Eric Fehr, Jake Guentzel and Olli Maatta scored for Pittsburgh (28-11-5), which ended a three-game road losing streak. Evgeni Malkin got his 50th point to tie Sidney Crosby for the Penguins lead with an assist on Cole's goal.
WATCH: All Penguins vs. Canadiens highlights
"I thought we didn't take a lot of chances through the neutral zone, and with a team as fast and as opportunistic as the Canadiens are, you know, that's playing to our strengths, and I thought we did that all night," said Fehr, who was a healthy scratch the past three games.
Sven Andrighetto scored at 18:11 of the second period when his wraparound shot went in off the back of the paddle of Murray's stick to draw Montreal within 3-1.
Carey Price made 22 saves for the Canadiens (27-13-6), who have lost three of four.
"We played a really good hockey team, the Stanley Cup champions, and to give yourself a chance at least to win this hockey game you've got to compete," Montreal coach Michel Therrien said. "We didn't compete, our focus was not quite there. Disappointing night."
Pittsburgh forward Patric Hornqvist had two assists, including one on Cole's third goal of the season that gave the Penguins a 1-0 lead at 14:52 of the first. Fehr made it 2-0 with his sixth goal at 5:19 of the second period.
Hornqvist got his second assist on Guentzel's fourth goal, a deflection of defenseman Cameron Gaunce's shot from the left point past Price at 17:38 that put the Penguins ahead 3-0.
Maatta scored his first goal in 63 games -- since Feb. 8, 2016 -- at 15:36 of the third period.
The Canadiens have allowed 28 goals in their past eight games, which include four wins (4-4-0).
"When you allow goals, it's usually a team fault," Price said. "I think you've got to look at it for what it's worth. On my part, I need to play better. You've got to stay positive and look at the bright side, we're still first in our division and you can't win the Stanley Cup in January. So we just need to improve going forward."