Jake Virtanen and Bo Horvat each had a goal and an assist for the Canucks (12-16-3), who won for the second time in 14 games (2-10-2).
"I think we played good some games that we lost," Pettersson said. "It's good to finally be rewarded, get some bounces with us. We played really good today. This is what it's going to take from us to be successful. Hopefully we can build on this."
WATCH: [All Predators vs. Canucks highlights]
Alexander Edler scored on a power play, Loui Eriksson scored just after another power play expired, and Jacob Markstrom made 26 saves for Vancouver.
"We played a hard hockey game and got rewarded," Markstrom said after his second win in 10 starts dating to Nov. 8. "We can't be happy and relax and think it's over. We have some catching up to do."
Ryan Hartman, Colton Sissons and Matt Irwin scored for the Predators (19-9-1), who were without defenseman P.K. Subban and top-six forwards Kyle Turris, Filip Forsberg and Viktor Arvidsson because of injury.
"They were faster than us, and we turned the puck over way too much, so a fast game appeared even faster just because of our puck decisions," Nashville coach Peter Laviolette said.
Pekka Rinne, who came into the game with an NHL-leading .935 save percentage, made several difficult saves early but was pulled after allowing four goals on 25 shots in two periods. Juuse Saros made four saves in the third.
"It could have been 5-0 after the first, honestly, without Pekka in there," Sissons said.