Pettersson put the Canucks ahead 2-1 when he scored on the power play over goalie Pekka Rinne's glove at 6:09 of the third period. He scored his second of the night, on his 21st birthday, on the rebound of a Brock Boeser shot off the rush at 11:41 to make it 4-2.
"It's a good headline for the media," Pettersson said of scoring on his birthday. "It's really nice to score goals. The family is here. Most importantly, we got the win."
[WATCH: All Predators vs. Canucks highlights]
Tanner Pearson had two goals and an assist, and Thatcher Demko made 34 saves for the Canucks (10-6-3), who ended a four-game winless streak (0-3-1).
"It's nice to win a tight game like this when the game was back and forth," Pettersson said.
Video: NSH@VAN: Pettersson goes upstairs on Rinne
Mikael Granlund and Filip Forsberg scored in the third period for the Predators (9-6-3), who are 1-3-2 in their past six games after winning the previous four.
Rinne, who was trying for his 350th NHL win, made 21 saves.
"The first period was not great, and then we played a lot better in the second, taking it to them, and the third period was dictated by special teams," Forsberg said. "It's not good enough. It's a little inconsistent. We're not OK with that."
Granlund tied the game 2-2 at 8:35 of the third when he deflected a Mattias Ekholm point shot.
Adam Gaudette put Vancouver ahead 3-2 when he scored on the power play at 10:59 of the third period.
Video: NSH@VAN: Gaudette cleans up loose puck for PPG
The Canucks were 3-for-3 on the power play, with two goals from the second unit.
"It's important to get contributions from everybody," said Gaudette, who had an assist on Pearson's power-play goal in the first period. "That's when we are playing our best, when everybody is going, when everybody is contributing."
After Pettersson gave Vancouver a two-goal lead, Forsberg scored on the power play at 14:26 to make it 4-3.
Pearson scored his second of the game shorthanded into an empty net with seven seconds left for the 5-3 final.
The Canucks matched their goal total from the previous four games.
"We were getting our chances, and the puck just wasn't going in," Gaudette said of the winless streak. "The only thing you can do is grind through it. They will finally go in like they did tonight."
With Predators defenseman Dante Fabbro in the penalty box after being called for holding Pettersson's stick late in the first period, Pearson put the Canucks ahead 1-0 when he scored on the rush 1:25 into the second, his wrist shot from the left face-off circle ending a 14-game goal drought.
"It's been a long time since the last one, so it's nice to get one," Pearson said.
Video: NSH@VAN: Pearson beats the defense, Rinne for PPG
Calle Jarnkrok tied it 1-1 when he scored on a rebound in tight off the rush at 13:35.
"Probably had 13-14 chances in the second and another 10 chances in the third period," Nashville coach Peter Laviolette said. "Throw that many chances, you hope to score some more goals."
Demko made 18 saves on 19 shots in the second period.
"Everyone in the room knew tonight was a big game," Demko said. "I felt we stepped up."
Center Bo Horvat played a game-high 27:06, including 11:48 in the third period, after the Canucks, who already were without fourth-line center Jay Beagle (undisclosed), lost third-line center Brandon Sutter to a lower-body injury early in the first period.
"Bo is a horse, he can play a lot of minutes," coach Travis Green said. "We definitely didn't want to run him like that, but we didn't have a choice tonight, especially with the penalty kill. We really don't have a lot of guys that take face-offs either. He's probably the only guy on our team that can play those kind of minutes up front, and he was good tonight."
Green did not have an update on Sutter but said Beagle is day to day.
They said it
"Guys played hard, kept fighting back in the game and just couldn't get there. It was really competitive. In the first, I thought they had the better of us, and the last two periods, I thought we took over the game, but the difference was special teams." -- Predators coach Peter Laviolette
"That was a gutsy effort by our team all the way around. We talked to our group before the game that we are going to need all hands on deck tonight to bring their best. That is a good team over there, and that was a big win." -- Canucks coach Travis Green
Need to know
Predators defenseman Roman Josi, who had an assist on Forsberg's goal, has 12 points (three goals, nine assists) in the past 11 games. He has 10 assists in his past 10 games against the Canucks. ... Granlund was moved up from the fourth line to the first line. ... Vancouver forward Josh Leivo, moved up to the top line, had an assist on Pettersson's second goal.
Predators: Host the Chicago Blackhawks on Saturday (8 p.m. ET; ESPN+, FS-TN, NBCSCH+, NHL.TV)
Canucks: Host the Dallas Stars on Thursday (10 p.m. ET; SNP, FS-SW, NHL.TV)
Video: Pettersson, Pearson score two each in 5-3 victory