"This group never gives up, that's for sure," said Kapanen, who won it for Toronto when his backhand shot from the slot found its way between Jonathan Bernier's skates for his 14th goal of the season. "We can go into a third period down and there's always a chance we're going to come back and win, so that's good to see."
Tavares and Morgan Rielly each had a goal and an assist, and Garret Sparks made 26 saves for the Maple Leafs (25-10-2), who have won four in a row.
WATCH: [All Red Wings vs. Maple Leafs highlights]
"I liked the resiliency when we need it; I wish we didn't have to use it, but it's 82 games and when you look at it at the end, the teams that win lots are the teams that come back and find ways to win," Maple Leafs coach Mike Babcock said. "That's what good teams do. It's not perfect every night. You'd like it to be, but it's not."
Filip Hronek, Michael Rasmussen, Christoffer Ehn and Frans Nielsen scored and Dylan Larkin extended his point streak to 11 games for the Red Wings (15-17-4), who are 1-4-2 in their past seven. Bernier made 19 saves.
"I think we played a great road game against a good team," Nielsen said. "We had them on their heels. It's just a tough loss. It seems like when we play the top teams in the League, we really raise our own game. For some reason against the best teams, we usually play our best hockey too. We've got to find a way to do that all the time."
Nielsen put in a rebound from the slot after Tyler Bertuzzi deflected Niklas Kronwall's shot to give the Red Wings a 4-3 lead at 12:03 of the third period, but Tavares tied it at 19:52 when he deflected Jake Gardiner's shot from the blue line.
"I saw the puck from the point, but there's no chance I can react to that tip so close," Bernier said. "I don't know; he reached pretty far for it. It was a [heck] of a tip."
Ehn scored his first NHL goal at 9:53 of the second period to put the Red Wings up 3-1.
The Maple Leafs got within one at 12:52 when Frederik Gauthier one-timed a pass from Par Lindholm in the slot to make it 3-2. The goal ended a 29-game drought for Gauthier dating back to Jan. 18 of last season.