Horvat gave the Canucks a 3-2 lead at 12:25 when he scored on a carom off the end boards off a shot from Tyler Myers.
Ilya Mikheyev scored at 17:19 of the third period on a shot from the slot on a pass from Horvat to make it 4-2.
"It's the best game through 60 minutes that we played in a long time," Boudreau said. "Maybe there was five minutes at the end of the first period that we weren't as good as we'd like to be, but I thought everybody was committed to playing the right way tonight, and when you do that, and you do it as a group of 20 and not of eight or 10 or 14, then you're a hard team to beat."
Horvat scored an empty-net goal with 41 seconds left for the 5-2 final.
"Tonight, I thought when the score was 2-1, we had numerous chances to find that third goal and create a little bit more separation," Oilers coach Jay Woodcroft said. "It didn't go in for us. Part of that is on us, and part of that is credit to the other team's goaltender, who played very well tonight."
NOTES: The Canucks overcame a deficit of two or more goals to win on consecutive nights for the first time in their history. On Thursday against the Kraken, they battled back from 3-1, 4-2 and 5-3 to win 6-5 in a shootout. … Horvat leads the NHL with seven multigoal games this season. … McDavid is the first Oilers player to be the first in the NHL to reach 30 goals in a season since Wayne Gretzky in 1986-87. He is the second active player to have seven consecutive seasons with at least 30 goals (Alex Ovechkin, 15 times, 2005-06 to 2019-20). … Edmonton forward Ryan McLeod had two shots in 10:10 after missing 13 games with an undisclosed injury.