Glen Murray scored his 20th goal of the season for Boston, his fifth straight season with 20 or more. Patrice Bergeron had the other goal for the Bruins, who lost their last three games by a combined score of 20-3.
Sami Kapanen scored twice for Philadelphia, which had won three of its last four games.
Mike Knuble scored for the Flyers with 1:55 to play after they pulled their goaltender, but the Bruins had trouble getting the puck past centre ice the rest of the game.
Bruins defenceman Zdeno Chara missed a game for the first time this season with a lower body injury.
Tim Thomas made 29 saves for Boston.
The Flyers took the lead on Kapanen's short-handed, unassisted goal 4:11 into the game.
Boest tied it when Savard's shot from the side of the net bounced in off goaltender Robert Esche 12:28 into the opening period.
Boston took the lead 34 seconds later on Murray's goal. Murray, who got behind the Flyers' defence, collected Savard's pass alone in front and flipped a short shot by Esche.
Bergeron scored a power-play goal with 37 seconds left in the first period, one-timing Paul Mara's pass between Esche's pads.
Philadelphia, which entered the game playing its best stretch since late November, made it 3-2 on Kapanen's second goal of the game. He collected a loose puck along the right boards, cut in front and lifted a shot under the crossbar.
Esche kept it a one-goal game with saves on shots by P.J. Axelsson and Marco Strum about a minute apart midway into the second. Against Axelsson, he came sliding across the crease.
Savard, positioned at the right edge of the crease, scored off the rebound of Bergeron's shot for a power-play goal 2:21 into the third period to make it 4-2.
Notes: Boston recalled D Matt Lashoff and G Hannu Toivonen before the game, and assigned G Philippe Sauve to Providence of the AHL. ... Both teams wore Teammates for Kids patches on their jerseys. The jerseys will be auctioned off later this month with proceeds benefiting the Garth Brooks Teammates for Kids Foundation. ... The Flyers dropped to 0-22-1 when trailing after two periods.