Tomas Tatar scored a fluky goal 85 seconds into the final frame to give the Red Wings (8-4-2) a lead they wouldn't relinquish, while Justin Abdelkader added an insurance marker that turned out to be the game winner.
"I thought we finished the second strong and had a real good third period," said Detroit coach Mike Babcock, who coached his 800th career NHL game. "We controlled the third, I thought hands down for me. There's no question you want to just keep going after them and I thought we did that tonight."
Early in the third period, Detroit forward Joakim Andersson chased down the puck in the Flames zone and attempted a centring pass from the corner, but the puck glanced off Tatar's skate before deflecting into the net off of Calgary goalie Joey MacDonald's leg.
"It was a lucky bounce," Andersson said. "Sometimes you need those lucky bounces to win games. It was nice to get it. We've been talking about that all year, shooting more and getting the pucks more to the net."
Calgary coach Bob Hartley said Tatar's goal was definitely a tough break for the Flames (5-6-2) to handle.
"Obviously, it's like you take a good punch on the nose, but, at the same time, you have to regroup," Hartley said. "In a game, anything can happen and you have to be ready for it."
Abdelkader then scored at 16:36 of the third when he sent a wrist shot into the top corner past MacDonald.
Curtis Glencross rounded out the scoring for the Flames when his pass from behind the net hit Detroit defenceman Niklas Kronwall and bounced past Howard with 9.8 seconds left on the clock.
Pavel Datsyuk and Henrik Zetterberg each had a goal and an assist in the first period to put the Red Wings up 2-0 before the Flames answered back with goals by Chris Butler and rookie Sean Monahan in the second.
"I think after they scored their second goal, we really turned things around and got playing again," Babcock said.
Kronwall and Todd Bertuzzi each had two assists for the Red Wings, who were coming off a 2-1 win over the Vancouver Canucks on Wednesday.
"In the second period, a couple mistakes and the puck wound up in the back of our net," said Howard, who made 22 saves to improve his record to 5-4-2. "I think we got back to playing the style of hockey we played in Vancouver the whole game in the third period here. That's how we're going to be successful."
The Red Wings will continue their four-game road swing through Western Canada on Saturday when they visit the Edmonton Oilers.
"We've got to get re-energized and get ready to go," Babcock said.
Jiri Hudler had two assists for the Flames, who finished their three-game homestand with a 1-2 record. MacDonald finished with 18 saves.
"I felt that we didn't skate like the way we could," Hartley said. "The way that the Wings play, they kind of slow down the play, and I felt that we got caught. Especially with scoring two goals, they kind of put us back on our heels a little bit. I just felt that we didn't have our usual jump."
Calgary now heads out on a four-game road trip starting on Sunday in Chicago before travelling on to face Minnesota, St. Louis and Colorado.
Despite being outshot 12-5 in the first period, the Red Wings had a 2-0 lead thanks to goals by Datsyuk and Zetterberg.
Datsyuk opened the scoring at 10:57. MacDonald made a glove save to stop a point shot by Detroit defenceman Jakub Kindl, but the puck dropped right into the slot to Datsyuk who easily deposited it into a wide-open net.
Late in the first, Bertuzzi spotted Zetterberg wide open at the side of the net and made a nice behind-the-back pass to get him the puck. Zetterberg then easily roofed a shot into the net over the outstretched right pad of MacDonald.
Early in the second period, Howard made a glove save to deny a breakaway attempt by Mike Cammalleri before sticking out his right pad to thwart a scoring chance by Glencross.
Calgary's persistence paid off as Butler fired a point shot that deflected off Andersson's stick and past Howard.
The Flames continued to pour on the pressure and tied the score at 2-2 at 12:47 of the second when Monahan took a pass from Cammalleri and roofed a shot into the top corner over Howard's outstretched glove hand.
Notes: Retired goalie Miikka Kiprusoff had started the last 17 games Calgary played against Detroit dating back to Dec. 12, 2008 when it was Curtis McElhinney in between the pipes for the Flames. … MacDonald, who played 47 games over parts of three seasons for Detroit, had played the Red Wings only once before in his career. It was when he was with the New York Islanders on March 27, 2009 when he made 42 saves for the first of his two career NHL shutouts.