Emery, who made his fourth start this season, lost a shutout bid with 9:10 left in the third when Olli Jokinen scored. He was solid in place of No. 1 goalie Corey Crawford for the Blackhawks, who played their second game in two nights.
"I thought Ray was special for us, a big part of us getting two points," Chicago coach Joel Quenneville said. "He was big in a lot of ways."
Emery signed with the Blackhawks as a free agent last summer. He has had an up-and-down career, due in part to a serious hip injury. Now he is providing quality depth to Chicago.
"He stepped in there when we needed him to," Blackhawks captain Jonathan Toews said.
Emery fended off the Flames off early and then helped Chicago protect 1-0 and 2-0 leads.
"You want to get more comfortable in there, and I'm definitely working on things, and trying to improve," Emery said. "It's good when you can get an early lead, keep the lead, and limit the other team's chances.
"(The Flames) throw it to the net, and whack at pucks, and there were definitely pucks there, but my D did a good job of letting me see the puck, and when there were rebounds there, taking them away."
Keith and Seabrook, Chicago's two top defensemen, both scored their first goals of the season in the Blackhawks' 17th game.
"That's part of our game that needs to be there," Keith said. "I think it's important that we stay on that and help contribute.
"It's nice to get points and things like that but the main thing is just keeping plays alive and having good gaps and supporting our forwards."
Calgary's Miikka Kiprusoff stopped 27 shots and made several tough, close-in saves to keep the game close. The Flames have scored just four goals in four games, and have little room for error.
"We had our opportunities and we never capitalized on them," Calgary coach Brent Sutter said. "Five-on-five we had a couple breakdowns that cost us two goals. That's the outcome of the game.
"We had chances, we've got to bury them, especially in that second period there. We had those couple opportunities, and we didn't capitalize in a tight game."
The Blackhawks (10-4-3) won their second straight, and the Flames (6-8-1) dropped their second in a row.
Keith opened the scoring with 7:51 left in the first.
Kiprusoff stopped Patrick Sharp's drive from right wing, but kicked the rebound to the top of the left circle and lost his balance. Keith then golfed a shot from the high shot into the open net.
Seabrook's screened power-play goal with 7:49 left in the second made it 2-0. His quick, low drive from the top of the slot slipped past several players before landing in the net.
About a minute later, Emery used a quick pad save to stop Curtis Glencross on a breakaway.
"He made a big stop there, and a couple of other moments he kept them away from us, I guess." Toews said.
Jokinen scored on a play off a faceoff in the Chicago zone midway through the third to cut the deficit to 2-1.
Jokinen won the draw and pulled it back to Mark Giordano at the left point. Giordano skated down the boards, and passed back to Jokinen who fired in a one-timer from the slot.
Stalberg made it 3-1 with 3:11 left in the game. After trailing in late down the slot, he took Marian Hossa's centering pass from behind the net and connected from the edge of the crease.
Kane scored into in an empty net with 4 seconds left.
Keith played his 500th NHL game. ... Emery's previous shutout, on Feb 1, 2010, was against the Flames while he was with Philadelphia. ... Chicago C Dave Bolland (right foot) sat out a second game and is day to day. ... Calgary D Anton Babchuk missed his first game with a broken left hand. ... Flames C Brendan Morrison missed his third game because of a left knee injury. Both players have been placed on the injured list. ... Calgary recalled D T.J. Brodie from Abbotsford of the AHL in time. ... Calgary D Cory Sarich was a healthy scratch for a third straight game.