"You always want to start off hot, you always want to start off strong," said Horvat, who signed a six-year, $33 million contract on Sept. 8. "It definitely helps my confidence."
WATCH: [All Oilers vs. Canucks highlights]
Brandon Sutter also scored and Jacob Markstrom made 33 saves. It was Vancouver's first regulation win over the Oilers since Nov. 19, 2014; Edmonton had been 9-0-2 against the Canucks since.
"It gives our group a lot of confidence," Horvat said. "We beat a pretty good team over there."
Kris Russell and Ryan Nugent-Hopkins scored for the Oilers (1-1-0), who were coming off a 3-0 win in their season opener against the Calgary Flames on Wednesday.
Cam Talbot made 27 saves to shut out Calgary but was pulled after giving up three goals on seven shots when Horvat scored from a bad angle for a 3-1 lead 32 seconds into the second period. Laurent Brossoit stopped all 19 shots in relief.
"[Talbot] wasn't sharp, the team wasn't sharp, trying to change things," coach Todd McLellan said. "We were going to play a cute, control-type game and they played a scrappy, hard game, and by the time we figured that out it was a little too late."