Leon Draisaitl collected three assists and Connor McDavid also scored for the Oilers, who received a 30-save performance from goaltender Mike Smith to claim their fourth victory in a row and 10th in 12 outings — a run that has vaulted them into second place in the North Division.
The Oilers trailed 3-0 when Kahun put them on the board late in the first period. He sent a shot from the bottom of the right circle that Canucks goalie Thatcher Demko got a piece off, but the puck went off the post and off his back before trickling over the line with 77 seconds remaining in the frame.
After a scoreless second period, Kahun netted his second of the night 55 seconds into the third period. He was in nearly the same spot from which he scored his first goal when he one-timed a cross-ice pass from Draisaitl for his fourth goal of the season.
McDavid’s power-play goal — another one-timer set up by Draisaitl — evened the count at 4:23 of the third period.
Ennis completed the comeback when an Adam Larsson point shot ricocheted off a couple of players before also hitting his foot and going into the net with 6:35 left.
The result is just the latest disappointing defeat for the Canucks, who have just two wins in their past 12 games (2-8-2).
Needing a big start, the hosts received it when Bo Horvat opened the scoring 66 seconds into the game with a sharp-angled shot from nearly all the way in the corner that somehow beat Smith.
Tyler Myers doubled the lead with another lucky tally. His slap shot from the top of the right circle that redirected off the outreached stick of Ennis and went into the top corner at the 8:06 mark.
The Canucks believed they had the game in control when Elias Pettersson converted during a scramble at the 15:17 mark to make it a 3-0 game, but they couldn’t hold on once the Oilers started buzzing.
Demko stopped 25 shots for the Canucks, and Pettersson had a two-point game.