Daymond Langkow scored two power-play goals and goaltender Miikka Kiprusoff stopped 33 of 35 shots for the hosts, who won their second in a row at home to even up the best-of-seven series at 2-2. Game 5 is Saturday in Detroit, with Game 6 back in Calgary on Sunday.
Craig Conroy also scored for Calgary, while Alex Tanguay and captain Jarome Iginla assisted on both of Langkow's goals before a sellout crowd of 19,289 at the Pengrowth Saddledome.
Todd Bertuzzi and Johan Franzen replied for the Wings.
The Flames have to find a way to win in Detroit in order to upset the top-seeded team in the Western Conference and advance to the second round.
Calgary was outplayed and outshot 97-35 in the opening two games at Joe Louis Arena, where the Wings won 4-1 and 3-1.
"To win this series we have to win one in their barn and we want it to be next game," Iginla said.
The Flames scored two power-play goals on six chances while holding Detroit scoreless on six opportunities Thursday.
Six of Calgary's eight goals this series have come with a man-advantage.
"We've got to get it done and it doesn't matter how," Langkow said. "Fortunately our power play has been pretty good all series."
Kiprusoff had to make tougher saves than Detroit counterpart Dominik Hasek, who turned away 18 of 21 shots and took a costly unsportsmanlike penalty in the first period.
A screened Kiprusoff managed to get a pad on a Nicklas Lidstrom shot from the point during a Detroit power play late in the third to preserve the lead.
"Tremendous again," Langkow said of his goaltender. "All four games he's been unbelievable for us."
Calgary was outshot 13-5 in the second, but Kiprusoff held firm. Langkow scored his second power-play goal of the night on a two-man advantage at 8:19 with Wings captain Lidstrom and forward Robert Lang off for stick infractions.
"We put ourselves in a bad position by taking penalties, especially the 5-on-3s they're getting," Lidstrom said. "They're good puck movers, they're going to find openings, so we have to find ways to stay out of the box. It's that simple."
Bertuzzi, who recently returned to the lineup after a concussion and playing in just his second playoff game since May 8, 2003, was a presence on the Wings' fourth line.
He used his six-foot-three, 242-pound frame to create room for himself and his teammates. He scored Detroit's first goal and assisted on the second.
Some history between Hasek and Iginla resurfaced early in the first period and it contributed to Langkow scoring a power-play goal at 8:29 to spot the Flames a 1-0 lead.
Hasek went down when he made contact with Iginla, got up and gestured with his stick at the Flames captain cruising behind the net. The Detroit netminder was slapped with a unsportsmanlike penalty with Wings defenceman Mathieu Schneider already in the box for cross-checking.
"He bumped into me and the ref didn't call it," Hasek complained. "I pretended like I was going to slash him. I never did anything to him, but the referee told me that was enough."
Countered Iginla: "I was surprised he got so upset about that play. I didn't feel like I was in his space at all. He came into me and bumped me outside the crease.
"If he gets frustrated, it's not a bad thing from our point of view."
The last time the Wings were in Calgary on March 20, Hasek's attempt to draw a penalty when Iginla nudged him backfired and resulted in the winning goal for Calgary.
Hasek embellished the hit and went down, but with no penalty forthcoming, Kristian Huselius scored into the open net.
Flames defenceman Robyn Regehr (knee) was a scratch for a second straight game.