Pavel Datsyuk and Henrik Zetterberg each had a goal and an assist for the Red Wings (8-4-2), who were coming off a 2-1 win over the Vancouver Canucks on Wednesday. Tomas Tatar also scored, while Niklas Kronwall and Todd Bertuzzi each had two assists.
The Red Wings will continue their four-game road swing through Western Canada on Saturday when they visit the Edmonton Oilers.
Chris Butler, Sean Monahan and Curtis Glencross scored for the Flames (5-6-2), who finished their three-game homestand with a 1-2 record. Jiri Hudler finished with two assists.
Calgary now heads out on a four-game road trip starting on Sunday in Chicago against the Blackhawks before travelling on to face Minnesota, St. Louis and Colorado.
Detroit goalie Jimmy Howard stopped 22 of 25 shots he faced to improve his record to 5-4-2, while Calgary goalie Joey MacDonald made 18 saves.
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, Todd 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 Curtis Glencross.
Calgary's persistence paid off as Butler fired a point shot that deflected off Detroit forward Joakim 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.
A fluky goal by Tatar early in the third period gave then gave the Red Wings a lead they wouldn't relinquish.
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 MacDonald's leg.
After Tatar's unlikely goal, Abdelkader added an insurance marker at 16:36 of the third when he sent a wrist shot into the top corner past MacDonald.
With MacDonald on the bench for an extra attacker, Glencross attempted to pass the puck out front from behind the Detroit net, but it bounced off of Kronwall and past Howard with 9.8 seconds left on the clock.
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.Suggest a correction