Jannik Hansen and Dale Weise also scored for Vancouver (14-9-6), which ended a two-game losing streak.
Jaden Schwartz and Patrik Berglund both scored in the third period for the Blues (16-11-2), who lost for only the second time in seven games. St. Louis had won three straight with rookie goalie Jake Allen. He stopped 16 Canucks shots.
The Blues outshot the Canucks 34-19. Vancouver managed only a total of five shots in the first and third periods.
After being badly outshot in the opening frame, the Canucks woke up in the second period and scored three unanswered goals.
Schneider started after watching the previous four games from the bench. He was kept busy in a scoreless first period as the Blues outshot the Canucks 15-3.
He made saves on David Perron from left wing and Alex Pietrangelo from the right point. After retrieving his own rebound, Perron sent the puck to Pietrangelo.
Later in the period, he robbed Pietrangelo from short range with his glove and foiled Andy McDonald, who returned to the Blues lineup after missing 10 games with a knee injury.
Hansen opened the scoring 2:30 into the second period when he took a cross-ice pass from Mason Raymond in the neutral zone, skated over the blue line and beat Allen with a slap shot.
The goal came on Vancouver's sixth shot of the game. Daniel Sedin gave the Canucks a 2-0 lead less than two minutes later when he fired in brother Henrik's angle pass from behind the goal line.
Daniel Sedin ended his scoring drought at eight games.
Weise, known for fisticuffs rather than scoring dexterity, extended Vancouver's lead to 3-0 midway through the second period on a nifty play. He took a spin-around forehand pass from Jordan Schroeder and then deked Allen while skating across the goal mouth.
It was Weise's second goal of the season and first in 11 games.
The Blues got on the scoreboard just over five minutes into the third period when Vladimir Tarasenko's shot bounced in off Schwartz, cutting their deficit to 3-1.
Berglund pulled St. Louis within a goal at 13:38 of the third as Kris Russell's shot bounced to him off the back of Canuck defenseman Chris Tanev's head.
The Canucks received a power play with 3:06 left in the third period as Vladimir Sobotka was called for holding. The whistle finally blew after the Canucks had a prolonged delayed penalty, struggled to get the puck up the ice with an extra attacker. Kevin Bieksa just missed the net as he tried to put in a pass from Raymond.
St. Louis was blanked on three power plays. The Canucks were unsuccessful on two.
NOTES: The Canucks lost forward Zack Kassian to an injury in the first period. He had returned to Vancouver's lineup after missing the previous two games with a sore back. He fought St. Louis forward Chris Stewart, the NHL's first star of the week, less than three minutes in. ... Vancouver forward Andrew Ebbett was scratched, and David Booth remains out indefinitely with a leg injury. ... Stewart played his 300th NHL game. ... Blues forward T.J. Oshie missed his third consecutive game with a rib injury. He is expected to return Saturday in Edmonton.
Chris Stewart got a goal and two assists, David Perron added four assists, and Scott Nichol, Vladimir Sobotka and Alex Pietrangelo also scored as the Blues won after two straight losses.
David Moss scored a short-handed goal, Keith Yandle had a power-play goal and Shane Doan added his second goal in three games for the Coyotes, who have lost two straight.
After Stewart gave the Blues a 1-0 lead on a long rebound to the bottom of the right circle, a series of defensive miscues led to four of the next five goals.
St. Louis Blues Executive Vice President and General Manager Doug Armstrong announced the club has placed forward Andy McDonald on Injured Reserve today. McDonald is listed as week-to-week after suffering a left knee injury during practice yesterday at St. Louis Mills. In addition, the Blues have listed forward Alex Steen as day-to-day with an upper body injury. Steen was also injured during yesterday’s practice.
McDonald, 35, has appeared in all 18 of the Blues’ games this season tallying 11 points including three goals and eight assists. Overall, the 5’10, 175-pound forward has dressed in 666 National Hockey League (NHL) games accumulating 479 points including 178 goals and 301 assists.
Steen, 28, has appeared in all 18 of the Blues’ games this season and leads the team with 16 points including four goals and 12 assists. Overall, the 6’0, 212-pound forward has dressed in 515 NHL games totaling 292 points including 119 goals and 173 assists. The Winnipeg, Manitoba native was originally drafted by Toronto in the first round, 24th overall, of the 2002 Entry Draft.
The Sharks' seven-game skid was their longest streak since a 10-game run Nov. 5-30, 2005.
Joe Thornton also scored for San Jose, which began the season with a franchise-record seven successive wins.
St. Louis has dropped five consecutive home games. The Blues also had a three-game winning streak halted. The Blues were coming off a 3-0 road trip with wins in Detroit, Calgary and Vancouver.
Kennedy scored the go-ahead goal at 13:02 on a shot from the left faceoff circle that eluded goalie Jake Allen, who had won the first three starts of his career.
Meanwhile, the Blues have traded defenseman Scott Ford to the Nashville Predators in exchange for forward Jani Lajunen.
Patrik Berglund also scored for St. Louis, which swept its three-game road swing after losing five straight games.
Blues rookie goaltender Jake Allen made 28 saves and stopped the Canucks' Ryan Kesler and Alex Burrows in the shootout.
Kesler and Henrik Sedin had their first goals of the season and Mason Raymond also scored in regulation for Vancouver, which has lost two straight after winning six in a row.
The Canucks looked destined to lose in regulation after the Blues took a 3-2 lead early in the third period, but Raymond tied the game on a power play with 1:47 remaining.