Halak was coming off back-to-back shutouts, but his hopes for a third were dashed early when Weber scored his first goal since March 12, just 3:47 in.
Weber's goal from the left circle snapped Halak's shutout streak, but that was all Halak allowed until one minute remained in the game.
Crombeen tied it 1-1 at 7:45 of the second period when he beat Miller with a wrist shot from the right circle for his first goal since March 30. Perron put the Blues on top 5:28 later when he deflected home Oshie's shot from the left circle.
"It kind of got away from us in the second period," Miller said. "We didn't do some of the things we needed to do. It turned into a period that gave them back the edge."
Backes made it 3-1 with a power-play goal at 11:35 of the third period. After Myers scored a power-play goal with 1 minute left to cut it to 3-2, Backes sealed the win with an empty-net goal with 34.9 seconds left.
Pietrangelo extended his career-best point streak to nine games. ... The Sabres have not won a road game since winning at Nashville on Dec. 3. ... Buffalo has been outscored 50-17 during its road skid. ... St. Louis has scored just six goals in its last three games, all wins. The Blues have allowed just two goals in that span. ... The Sabres hadn't played at St. Louis since Dec. 27, 2009.
Copyright by STATS LLC and The Associated Press
ST. LOUIS, MO - JANUARY 21: A fan holds a dog available for adoption during Barkin' for the Blues, a pet adoption...