Pettersson, who leads the Canucks and NHL rookies with 44 points (23 goals, 21 assists) in 39 games, missed the previous five games with a sprained knee. He gave Vancouver a 1-0 lead at 10:16 of the first period with a redirection of Brock Boeser's point shot.
"It's great to be back," Pettersson said. "I felt I lost the puck a few times, made some bad decisions, some turnovers, but I've just got to play it simple."
WATCH: [All Red Wings vs. Canucks highlights]
Bo Horvat and Antoine Roussel scored in the third period, Boeser had two assists, and Jacob Markstrom made 35 saves for Vancouver (23-21-6), which extended its point streak to five games (3-0-2).
"Coming to the rink when you're winning versus coming to the rink when you're losing is a huge difference," Markstrom said. "I feel like it makes everything easier."
Thomas Vanek and Frans Nielsen each had a goal and an assist, and Jonathan Bernier made 28 saves for Detroit (18-25-7), which lost in regulation despite leading in the third period for the second straight game. The Red Wings are 3-9-2 in their past 14 games.
"When you lose a lot, your confidence sags," Red Wings coach Jeff Blashill said. "That's the League right now. It's so tight that when you get on a roll you can really get on a roll, but that goes both ways, winning and losing, and right now we're on a roll the wrong way. We just keep finding ways to lose hockey games."
Horvat tied it 2-2 at 7:27 of the third period with his first goal since Dec. 20 (12 games). He swept a loose puck five-hole on Bernier from the left hash marks after Boeser's initial shot hit Pettersson in the back of the leg.