Giroux gave the Senators a 1-0 lead at 2:57 of the first period when a shot by Nikita Zaitsev from the top of the right circle deflected off his glove, and Stutzle extended it to 2-0 at 3:49 after receiving a spinning pass from Mathieu Joseph.
Kirby Dach cut it to 2-1 at 13:20 on a power play, reaching behind Forsberg for a loose puck following a save on Suzuki.
Alex DeBrincat pushed it to 3-1 at 16:23 of the second period, scoring with a wrist shot glove side after receiving a dot-to-dot pass from Stutzle on a power play.
Hoffman cut it to 3-2 at 19:55 with a one-timer from the top of the right circle on a power play.
"Obviously we battled hard and we fought back all night, and we weren't out of it, we stayed in it," Canadiens defenseman Arber Xhekaj said. "Tough bounce at the end, but that's just how some games go."
NOTES: Tkachuk has 51 points (20 goals, 31 assists) in 50 games, the fourth player in Ottawa history to have at least 50 points through 50 games at age 23 or younger, joining Jason Spezza (twice), Martin Havlat, Marian Hossa and Alexei Yashin. … Stutzle has 22 goals in 46 games, tying his career high set last season in 79 NHL games. … Giroux extended his point streak to five games (five goals, four assists). … Suzuki had two assists and has 40 points (16 goals, 24 assists) in 51 games this season, becoming the 12th player to have 40 points in each of his first four seasons with the Canadiens, and the first since Saku Koivu (1995-96 to 1998-99).