Det var den formstarke Horvat som inledde målskyttet i den första perioden då han genom en soloprestation fixade 1-0 till Vancouver i numerärt underläge.
Tanner Pearson fyllde sedan på till 2-0 i powerplay och för assisten stod Elias Pettersson.
St. Louis hann reducera innan den andra perioden var över, men tidigt i den tredje var svensken framme med klubban och satte 3-1.
Brock Boeser spelade in pucken framför mål och Pettersson var snabb i tanken och satte dit klubban på den studsande pucken. Även det målet kom i numerärt överläge och svensken har nu gjort mål i två raka matcher.
St. Louis, som vann Stanley Cup 2019 och var bäst i den västra konferensen innan grundserien avbröts på grund av coronapandemin, kom ikapp tack vare mål av Sammy Blais och Jaden Schwartz. Därmed gick matchen till förlängning.
Nästan sex minuter in i förlängningen kom Horvat fri och satte sitt andra mål för kvällen och sjätte sedan grundserien avslutades.
– Mitt spel känns rätt så bra, men det viktigaste är att det behövs ett helt lag för att vinna en ishockeymatch. Just nu är vi stabila hela vägen från målvakten upp, säger Horvat till ESPN.
Vancouvers svenske målvakt Jacob Markström stod för hela 34 räddningar.
Nu har Canucks två raka segrar och behöver alltså två till för att slå ut St. Louis. Lagen möts på nytt i Edmonton på söndag.
KLIPP: Tre snygga svenskmål i NHL (14/8)
NHL
St. Louis Blues
3 - 4
Vancouver Canucks
Åttondelsfinalerna i Stanley Cup
Östra konferensen:
Tampa Bay-Columbus 1–1 i matcher. Nästa möte natt mot söndag svensk tid.
Philadelphia-Montreal, 1–1 i matcher. Nästa möte natt mot måndag svensk tid.
Washington-New York Islanders, 0–2 i matcher. Nästa möte söndag kväll svensk tid.
Boston-Carolina, 1–1 i matcher. Nästa möte natt mot söndag svensk tid.
Västra konferensen:
Dallas-Calgary 1–2 i matcher. Nästa möte spelas söndag kväll svensk tid.
Colorado-Arizona, 2– 0 i matcher. Nästa möte spelas lördag kväll svensk tid.
Vegas-Chicago 2–0 i matcher. Nästa möte natt mot söndag svensk tid.
St Louis-Vancouver, 0–2 i matcher. Nästa möte natt mot måndag svensk tid.