DETROIT -- The Detroit Red Wings' talent bailed them out after they were outplayed for most of the game.
Brian Rafalski had a goal and an assist and Valtteri Filppula and Henrik Zetterberg also scored for Detroit, which won its fourth straight. Johan Franzen added two assists, and Ty Conklin made 29 saves.
"Sometimes when you're skilled, you get so caught up in your skill that you forget to compete," Red Wings coach Mike Babcock said.
It was the Flames' fifth straight loss in Detroit. They last won at Joe Louis Arena in December 2005.
"It's a hard building to play in. They have one of the best home records year in and year out," Calgary captain Jarome Iginla said. "That was as close as we've come."
Lidstrom beat McElhinney with a slap shot from the high slot area for his fourth goal.
"Franzen made a great play entering their zone with the puck," Lidstrom said. "He turned up and beat his guy with the pass on the wall. I'm just trying to hit that far side because he was a little screened."
Rafalski tied it at 3 with 6:17 left, beating McElhinney with a slap shot from the top of the right circle for his fourth goal.
"We battled back. We were down 3-1 in the third and we battled through it," Rafalski said. "We didn't play as well as we could in the first, and their goalie played really well. We continued to wear them down and it paid dividends for us."
Zetterberg brought the Red Wings to within one at 9:51 of the third period when he jammed in a rebound for his 13th goal.
Moss' power-play goal gave the Flames a 3-1 lead 8:51 into the third with his eighth goal. He backhanded in a rebound off a sprawling Conklin.
Filppula put Detroit on the board to make it 2-1 at 6:59 of the second period when he tipped in Kris Draper's slap shot for his fourth goal.
Calgary took a 2-0 lead in the first period. Conroy opened the scoring with 4:57 left with his fourth goal. He picked up a loose puck at the bottom of the right circle and sent in a shot off the stick of Detroit's Pavel Datsyuk.
Langkow scored with 50 seconds remaining. He put in a rebound for his seventh goal after Todd Bertuzzi carried the puck from the corner to the goal mouth and was stopped by Conklin.
Babcock shuffled the lines and defense pairings after the first period.
"It gave us a little bit of a spark," Lidstrom said. "We had to get skating more. We had to work harder. We got to that point in the second period."
Calgary center Dustin Boyd returned after missing five games with an upper body injury. ... Detroit's Jiri Hudler played his 200th NHL game. ... Moss is a native of the Detroit suburb of Livonia and played college hockey at Michigan.