ST. LOUIS (AP) -- Hannu Toivonen filled in with a first-string performance in goal.
"People were into the game and guys were playing great in front of me," Toivonen said. "That's the way to bounce back from the effort we had in Detroit. No one was satisfied and it shows a lot of character from our team to step up like that and get a win."
Toivonen, who was acquired in a trade with Boston over the summer, made his fourth start of the season -- first at home -- and his fifth appearance overall. He improved his record to 3-2 on the season.
The Blues won their fourth in a row at home, while the Canucks lost for the first time in regulation in the last nine games. They had gone 6-0-2 in their previous eight games.
Ryan Kesler scored for Vancouver, 5:11 into the third period to break up Toivonen's bid for his second career shutout.
Kariya scored his sixth goal of the season and gave the Blues a 1-0 lead at 17:46 of the first period when he used teammate Brad Boyes and Canucks defenseman Sami Salo as a screen and put a shot past a surprised Roberto Luongo, beating the Vancouver goalie stick side into the left-hand corner. Luongo did not appear to see the puck until it was already past him.
Luongo stopped the Blues' David Perron coming out of the penalty box on a breakaway attempt just prior to the Blues' first goal.
Johnson gave the Blues a 2-0 lead 1:58 into the second with a power-play goal when he skated in from the left point and one-timed a cross-ice pass from Doug Weight over the shoulder of Luongo. It was Johnson's second goal of the season.
"I found the seam and [Weight] made a great pass," Johnson said. "I'm pretty much out there just to pass and shoot. I had a great stance and I just pounded it when I got the puck in my wheelhouse."
Rucinsky also netted his second of the season 4:26 into the third period when he tipped home Mike Johnson's shot along the right boards after intercepting Luongo's clearing pass.
"I thought our guys played hard. I thought both teams played hard," Canucks coach Alain Vigneault said. "There's probably two of those three goals that Roberto would like to have back there, but sometimes those are things that happen. It was just a tough start. We tried to battle back and we weren't able to."
Toivonen made saves on Kesler early in the game and then made a nice pad save of a Markus Naslund shot to keep the Canucks off the scoreboard.
Toivonen also made a point-blank left pad save on Taylor Pyatt's attempt in the second period during a brief 5-on-3 for the Canucks to preserve a 2-0 lead.
"It was a shot from the point and I kind of figured I'd have to hurry back in the middle," Toivonen said. "I just got the luck there and got the rebound in front of me."
Toivonen made several saves in the third period to preserve the Blues' lead, including a redirect in the crease from Naslund late in the game.
Vancouver's Brendan Morrison had a goal disallowed midway through the third period that would have made it 3-2 when referee Justin St. Pierre blew the play dead after incidental contact in the crease between Toivonen and Vancouver's Alexandre Burrows.
Luongo was also strong, stopping 26 shots.
"There were a couple of seeing-eye shots there," Luongo said. "You know those are going to happen sometimes, but all in all, I felt that I wasn't fighting it."
Blues D Eric Brewer missed the game with back spasms. He is expected to be back in the lineup Sunday against Calgary. St. Louis' previous six victories had all been by one goal. The last time the Blues won a game by more than a goal was a 4-2 home win on Oct. 23 over Anaheim. The Canucks played without two of their top defensemen. Kevin Bieksa (calf) and Mattias Ohlund (suspension) were out of the lineup, while Salo returned after missing the previous eight games with a broken nose. Blues D Jay McKee, a healthy scratch the previous five games, returned to the Blues lineup.