Conor Garland added a goal and an assist for the Canucks (1-3-2) while Nils Hoglander and Tanner Pearson also scored. Oliver Ekman-Larsson, Bo Horvat and Quinn Hughes each contributed a pair of helpers.
Connor McDavid led the Oilers (4-3-0), scoring and notching an assist, while Zach Hyman and James Hamblin added short-handed goals. Ryan Nugent-Hopkins also scored for the visitors and Markus Neimelainen recorded a pair of assists.
Canucks netminder Stuart Martin stopped 18-of-22 shots and Stuart Skinner made 26 saves for the Oilers.
Vancouver’s victory came after the Oilers trounced the Canucks 7-2 in Edmonton on Monday.
Wednesday’s game was played at a sold-out Abbotsford Centre, the home of Vancouver’s American Hockey League affiliate, the Abbotsford Canucks.
The Oilers pulled Skinner with just over a minute to go in favour of an extra attacker, but couldn’t find the equalizer.
After struggling through much of the first two periods Wednesday, Vancouver’s power play finally began clicking in the third.
Pettersson put away his second goal of the night 9:45 into the period after Hyman was sent to the box for interference.
The Canucks went 3 for 8 with the man advantage but also gave up a pair of short-handed goals. Edmonton was 0 for 2 on the power play.
The final frame got off to a frantic start with a plethora of penalties and goals at both ends of the ice.
Nugent-Hopkins levelled the score 6:16 into the third on a strange play. The veteran forward missed his first chance but still managed to get a shot off from his knees, and the puck sailed through traffic and past Martin to make it 4-4.
Vancouver took a 4-3 lead with a power-play tally minutes earlier when Pettersson sent a one-timer past Skinner for his first goal of the night.
Each side was down to four men when Garland forced a turnover at Vancouver’s blue line earlier in the third. The winger streaked into Edmonton territory, putting a shot past Skinner to give the Canucks a 3-2 lead at the 1:52 mark.
The Oilers responded just 28 seconds later.
McDavid charged down the ice and slid a pass to Hamblin down low. The winger sent a backhanded shot past Martin to even the score at 3-3.
A scary play left Hoglander in a heap behind the Oilers’ net in the second period.
The Swedish winger went down hard after being clotheslined by defenceman Darnell Nurse. Hoglander lay on the ice for a few moments before a trainer came to check on him, and he eventually skated off on his own, holding a towel to his face.
Hoglander missed the rest of the second but returned to start the third.
Nurse was handed a double-minor for high-sticking on the play.
It was Edmonton that found the back of the net on the Canucks’ man advantage.
Hyman won a foot race to the puck in the Oilers’ zone and popped a shot over Martin’s pads for a short-handed goal that gave his side a 2-1 lead.
The advantage was short-lived, however.
Pearson scored 67 seconds later, tipping in Quinn Hughes’ blast from the blue line for his second goal of the pre-season.
The Oilers levelled the score midway through the second thanks to their captain.
Nurse sliced McDavid a pass and the superstar drove in alone, turning aside Vancouver defenceman Quinn Hughes, and sending a shot sailing over Martin’s shoulder 7:05 into the middle frame.
The goal was McDavid’s first of the pre-season.
The Canucks opened the scoring 17:14 into the game seconds after the Oilers killed off a penalty from Nurse.
Oliver Ekman-Larsson rang a shot off the post and Hoglander, stationed at the side of the net, withstood some pressure to get the rebound and shovelled it in behind Skinner. His second goal of the pre-season put Vancouver up 1-0.
Both sides will wrap their pre-season campaigns on Friday, with the Canucks hosting the Arizona Coyotes and the Oilers entertaining the Seattle Kraken in Edmonton.
The Canucks and Oilers will face off in Edmonton to open the regular season on Oct. 12.
NOTES: The hometown crowd had little love for Edmonton winger Jake Virtanen. The 26-year-old hails from Abbotsford and spent six seasons playing for the Canucks but was booed several times throughout the game.