Boston also stopped a three-game losing streak in home openers. The Bruins began the night tied with Philadelphia for the fewest points in the NHL.
Flames forward Stephane Yelle suffered a lower body injury and was taken off on a stretcher with 1:12 remaining in the second period after awkwardly falling and being pushed into the boards by Bruins defenceman Jason York.
Alex Tanguay cut the Bruins' lead to 3-2 with 9:36 left, but Calgary failed on three power-play opportunities including one late in the third period. They are now 3-for-44 on the season.
Murray scored his final goal from the left faceoff circle while falling to the ice. The power-play goal helped the Bruins regain a two-goal lead at 3-1 with 36 seconds left in the second period.
The Bruins started the season with five straight road games and were the last NHL team to play a home game.
Hannu Toivonen made 26 saves for Boston, including several point-blank chances in the closing minutes.
Brad Boyes gave the Bruins a 1-0 lead 18 seconds into the game when he converted a pass from Marc Savard and roofed the puck over Flames goalie Miikka Kiprusoff.
Murray made it 2-0 when he wristed a shot past Kiprusoff from the slot at 8:49 of the first.
Daymond Langkow cut the Bruins' lead in half when he beat Toivonen inside the left post at the 16:59 mark of the second period.
Kiprusoff made 27 saves and has dropped three straight games, allowing 13 goals for Calgary.
Murray leads the Bruins with four goals and has two of his five career hat tricks against Calgary.
Notes: Boston will play its first of four straight division games on Saturday against Buffalo. ... Marco Sturm missed the game for Boston after being hit with a Brad Stuart shot yesterday in practice.