The Habs (12-11-2) took a 4-0 lead into the first intermission but the Canucks (11-12-3) roared back with five unanswered goals in the second and third periods.
Vancouver’s Ilya Mikheyev scored twice in regulation, while Andrei Kuzmenko had a goal and a helper. Conor Garland, Bo Horvat and Jack Studnicka also scored for the home side and Pettersson notched a pair of assists.
Nick Suzuki had a goal and an assist for the Canadiens in regulation, while Cole Caufield, Sean Monahan, Michael Pizzetta, Christian Dvorak and Josh Anderson also found the back of the net. Jordan Harris registered two assists.
Canucks starter Spencer Martin struggled in net, stopping 5-of-9 shots before getting the hook late in the first period. He was replaced by Collin Delia who stopped 14 shots. Sam Montembault had 25 saves for the Habs.
The result capped a four-game homestand that saw the Canucks go 2-2-0 with back-to-back overtime wins.
Pettersson ended the extra frame quickly, sending a blistering shot through Montembault’s pads for his 12th goal of the season.
Kuzmenko forced overtime with a backdoor tip-in 18:35 into the third. J.T. Miller put the puck on the Russian rookie’s stick and notched his 300th NHL assist on the play.
Montreal retook the lead with three minutes left on the clock when Anderson’s shot went off Delia’s pad. The rebound bounced out, pinging off the skate of Vancouver defenceman Quinn Hughes and into the net.
Dvorak evened the score 15:23 into the third, redirecting in a Evgenii Dadanov pass from the top of the crease to tie the game.
Studnicka gave Vancouver a 5-4 lead 8:49 into the third. He picked off Montembault’s clearing attempt behind the Habs’ net and sent a shot up and under the crossbar before the goalie had a chance to get set back in his crease.
Mikheyev levelled the score 5:45 into the third when Pettersson sliced a pass across the crease to Mikheyev and he fired a sharp-angle shot past Montembault for his second goal of the game.
The Canucks scored a third unanswered goal a minute and 43 seconds earlier when Horvat batted in a rebound for his 20th goal of the season.
Mikheyev cut Vancouver’s deficit to 4-2 before the end of the second. Stationed below the goal line, Pettersson dished a puck to the Russian winger, who popped it in for his seventh of the season.
Garland got the home side on the board 16:44 into the frame after Montreal’s Arber Xhekaj fell in the offensive zone. Left alone in front of the net, Garland put a wrist shot up and over Montembault’s left pad.
The strike snapped a 17-game goalless drought for the Canucks winger.
Vancouver controlled play early in Monday’s contest, outshooting the visitors 8-0 five minutes into the game.
But it was the Canadiens that made the shots count, erupting with four goals in the opening frame.
Caufield was first on the board, blasting a slap shot from the bottom of the faceoff circle past Martin for his 14th goal of the season 7:49 into the first.
Less than five minutes later, Suzuki doubled the lead moments after the Habs killed off a penalty. The speedy centre beat Quinn Hughes to a puck and raced the Vancouver defenceman deep into Canucks’ territory where he released a wrist shot that caught Martin’s outstretched pad on its way into the net.
Montreal went up 3-0 when Monahan tipped Suzuki’s pass in from the top of the crease 14:57 into the period and Pezzetta put away his first of the season 80 seconds later, sending a backhand shot past Martin after stealing the puck off Vancouver’s Tyler Myers in the slot.
The Canucks pulled Martin following the 4-0 goal. Delia came on in relief, making his first appearance for Vancouver.
Suzuki extended his point streak to three games, with two goals and two assists across the stretch. The Canadiens captain leads his team in points with 28 (14 goals, 14 assists) on the season.
The Canadiens close out a four-game road swing against the Kraken in Seattle on Wednesday. The Canucks take on the Sharks in San Jose the same night.