DETROIT -- The Detroit Red Wings were in desperate need of a victory and two veteran stars helped delivered it.
Detroit snapped a six-game losing streak (0-4-2) and five-game home losing streak.
"We were hanging in, playing some good hockey, and then all of a sudden we're having some lapses where we give the other team way too many chances," Alfredsson said. "We did that some today, too, but overall we grinded."
Alfredsson also had an assist and was set up for the winner by Pavel Datsyuk, who had three assists. Datsyuk threaded a cross-ice pass to Alfredsson, who rifled in a one-time slap shot from the inside edge of the left circle for his ninth goal of the season.
Datsyuk drew the penalty on T.J. Brodie, who hooked Datsyuk as he tried to split the defense deep in the Calgary zone with 42 seconds left.
Alfredsson also got his 700th assist earlier in the game.
Detroit is without eight regulars due to injury.
"They had a little desperation and hunger in their game down the stretch," Cammalleri said.
Calgary coach Bob Hartley disagreed with the penalty call on Brodie.
"I didn't think it was a call," Hartley said. "I thought it was a hockey play. It was stick to stick."
Alfredsson opened the scoring only 26 seconds into the game when he put in a loose puck from the slot.
Backlund tied it at 5:11 with his fifth goal. He flipped in the puck after it caromed off the end boards.
Andersson gave the Red Wings a 2-1 lead at 11:38 of the second when Alfredsson's shot deflected in off his skate. It was Andersson's fifth goal. It was Alfredsson's 700th career assist.
Giordano's power-play goal tied it at 2 with 4:27 left in the second period. He beat Gustavsson with a shot from the high slot just after a two-man Flames' advantage ended.
Calgary C Mike Cammalleri returned after missing the previous game due to an illness. Cammalleri also played at the University of Michigan. ... Red Wings captain and C Henrik Zetterberg, who is on the long-term injured reserve due to a herniated disc, skated with his teammates Thursday morning for the first time since his previous game, which was Dec. 4. ... Flames C Jiri Hudler is a former Red Wing. ... Detroit RW Jordin Tootoo was in the lineup after being recalled from Grand Rapids of the AHL. The veteran enforcer was sent down to the team earlier in the season.