Pettersson scored the winner 32 seconds into the third period after evading Anaheim’s (9-13-0) Mason McTavish and wrapping around netminder John Gibson for the goal.
Thatcher Demko stopped 30 of 31 shots for Vancouver. Gibson stopped 25 for the Ducks.
The Vancouver Canucks (15-7-1) opened the scoring when Filip Hronek’s blocked shot was knocked home by Brock Boeser in the first period.
The goal was Boeser’s 16th of the season, putting him on top of the NHL scoring list.
Ryan Strome tied it for the Ducks after a tick-tack-toe play ending with the forward firing his shot from the right faceoff circle at 5:10 of the second period.
Boeser scored his 17th of the season into an empty net in the dying seconds of the third period.
The Canucks were outshot 27-12 through the first two periods before an improved third-period performance.
McTavish had a chance to play hero and tie the game with 2:17 left in the third but was denied by the goalpost. The Ducks have now lost seven straight games.
The Vancouver Canucks host the Vegas Golden Knights on Thursday. The Ducks host the Washington Capitals on Thursday.