William Nylander had an NHL career-high five points (two goals, three assists), Matthews had a goal and two assists, and Matt Murray made 22 saves for the Maple Leafs (18-5-6), who have won three straight and extended their point streak to 14 games (11-0-3).
"We're thrilled we get the win and get two points," Toronto coach Sheldon Keefe said. "I thought we still did a lot of good things in the game that helped us ensure we get two points.
"I thought we did a lot of things that were not good in the game that made the game a lot harder on ourselves than it needed to be, and it's been quite some time since that's been the case. I thought today was not indicative of the type of game we've been playing, and as a result, the game was chaotic."
Noah Hanifin scored twice, Andrew Mangiapane had two assists, and Dan Vladar made 29 saves for the Flames (13-11-4), who are 0-1-1 on a three-game road trip that began with a 3-1 loss to the Columbus Blue Jackets on Friday.
"It was [a] good hockey game," Calgary coach Darryl Sutter said. "I thought we had a really good effort from our club."