Adrian Aucoin also scored for the Flames, who climbed into a three-way tie with idle Minnesota and Colorado for first place in the Northwest Division at 84 points.
Calgary's Owen Nolan and Alex Tanguay each had two assists.
The Flames pounced on mistakes in the second period and built a 4-1 lead.
"You have to capitalize when you have those chances this time of year," Tanguay said. "We did and we won the game."
In the third, Kiprusoff stopped 16 of 17 shots to preserve the victory.
"We grabbed a little momentum in the second period and went from there," Iginla said. "Until then, the chances were very close."
In their previous two games - both road losses - the Flames had squandered leads, including a 3-0 advantage in a 6-4 defeat in Atlanta last Thursday.
"We've had trouble at the end of games lately," Tanguay said. "We need to learn to finish games. Today, Kipper was solid at the end."
Things got hectic for Kiprusoff after Chicago trimmed it to 4-2, but he held the Blackhawks at bay.
"I think we played smarter today and kept playing our game plan," Kiprusoff said. "It's crazy in our division. It's so close. We can't look at the other games and just worry about our games."
Robert Lang and rookie Jonathan Toews each scored their 20th goals for the Blackhawks, who lost for the fifth time in six games (1-4-1).
"We had a lot of great chances," Toews said. "We finally had a couple of power plays. When you have two or three in a row and it doesn't go in, it's hard to stay positive."
Chicago remained seven points behind eighth-place Vancouver and the playoff cutoff in the Western Conference. The Blackhawks have nine games remaining.
Although Calgary is in a stronger position than Chicago, Tanguay said the Flames are no less desperate.
"We're in no position where we can say we don't need the points as much as they need them," Tanguay said. "We're no way sure of a playoff spot, so we have to keep battling."
Patrick Lalime started for Chicago and allowed four goals on 22 shots through two periods. Nikolai Khabibulin replaced Lalime to start the third and made five saves.
Khabibulin, the Blackhawks' No. 1 goalie and highest-paid player, dressed after missing 12 games due to back spasms.
Aucoin opened the scoring 1:51 in with a power-play goal on the Flames' first shot. His drive from the top of the slot was screened by Nolan and clanked in off the right post.
Toews tied it at 10:25 on Chicago's first shot, fooling Kiprusoff from the left circle with a low drive.
Iginla converted a breakaway 1:13 in to give Calgary a 2-1 lead after picking off defenseman Brent Seabrook's pass at center ice. Huselius made it a two-goal edge at 4:54.
Phaneuf extended Calgary's lead to 4-1 with 6:13 left in the second on a low shot from the right circle.
Lang tucked in a rebound of Dustin Byfuglien's shot at a 4:41 of the third to cut the Blackhawks' deficit to 4-2.
Notes: Iginla has five goals and three assists in four games. ... Chicago D Brent Sopel returned after missing 12 games with a broken wrist. ... Khabibulin dressed because rookie G Corey Crawford, who had been backing up Lalime, had the flu. As a technicality, Crawford was reassigned to Rockford (AHL) before the game.
|PPG - Adrian Aucoin (9) ASST: Alex Tanguay (37), Owen Nolan (13)|
1 - 0 CGY
|PPG - Jonathan Toews (20) ASST: Patrick Kane (45), Jason Williams (19)|
1 - 1 Tie
|Jarome Iginla (45) ASST: NONE|
2 - 1 CGY
|Kristian Huselius (24) ASST: Owen Nolan (14), Robyn Regehr (13)|
3 - 1 CGY
|Dion Phaneuf (15) ASST: Alex Tanguay (38)|
4 - 1 CGY
|Robert Lang (20) ASST: Dustin Byfuglien (16), James Wisniewski (16)|
4 - 2 CGY
|Power Play %||18.8%||17.6%|
|% on Road||19.0%||19.5%|
|% at Home||18.7%||15.8%|
|Duncan Keith Hooking against Kristian Huselius|
|Adam Burish Fighting (maj) against Eric Nystrom|
|Eric Nystrom Fighting (maj) against Adam Burish|
|Owen Nolan Hooking against Rene Bourque|
|Jarome Iginla Holding against Dustin Byfuglien|
|Jordan Hendry Hooking against Matthew Lombardi|
|Anders Eriksson Hooking against Jason Williams|
|Wayne Primeau Slashing against Rene Bourque|
|Jim Vandermeer Interference against Brent Sopel|
|Alex Tanguay Hooking against James Wisniewski|
|Rene Bourque Too many men/ice - bench|