GLENDALE, Ariz. -- Darcy Kuemper made 37 saves in the Arizona Coyotes' 3-0 win against the Calgary Flames at Gila River Arena on Saturday.
Lawson Crouse had a goal and an assist for the Coyotes (12-7-2), who have won three of four games after going winless in three straight (0-2-1).
"You frustrate teams when you get in people's faces and you have quick sticks and you're on top of people," Coyotes coach Rick Tocchet said. "That's the way we have to play. That was a nice win for us."
[WATCH: All Flames vs. Coyotes highlights]
David Rittich made 22 saves for the Flames (10-9-3), who are 0-2-1 in their past three.
A Rittich turnover led to the Coyotes' first goal. The goalie's clearing attempt hit Coyotes center Derek Stepan in the chest, and Stepan put a wrist shot into an open net for a 1-0 lead at 6:35 of the second.
"This game is on me, and I apologized for it," Rittich said. "I have to figure out what I did, and it can't happen the next time. This game is about mistakes, and I did about the worst one you can do."
Stepan's goal was his second in 20 games.
"I've had a tough time evaluating my game because of the lack of production, and you fight with things in your own head," Stepan said. "So you score a goal that's kind of a gift. It's just crazy how the game works."
Video: CGY@ARI: Stepan nets goal following Rittich turnover
Carl Soderberg made it 2-0 on a 2-on-1 with Crouse at 8:22 of the second.
"Other than [part of the second period] it was a tight game, and it's been that way for however many games," Flames forward Matthew Tkachuk said. "That's kind of a [Stanley Cup] Playoff style; they're tight games, and you're not going to get a ton of chances each way."
Crouse scored into an empty net with seven seconds remaining for the 3-0 final.
"That 2-0 lead made it a tough climb," Calgary coach Bill Peters said. "We had some good looks, but we just couldn't find the net."
Kuemper's shutout was his second of the season and the 18th of his NHL career, coming in his 200th NHL game. He is 4-1-1 against the Flames.
"We've been talking a lot about getting back to being a little bit tighter," Kuemper said, "and I thought the guys did a great job, blocking a lot of shots and keeping guys to the outside to let me see the puck."
Video: Kuemper earns Saturday's Pepsi Zero Sugar Shutout
Kuemper and Rittich were among five players who drew a combined seven penalties with 12 seconds remaining in the second.
The Arizona goalie appeared to become upset when Tkachuk poked at Coyotes defenseman Jason Demers, who was down on the ice after being cross-checked by Calgary forward Johnny Gaudreau, and the goalie bear-hugged Tkachuk and pulled him down.
Kuemper received two roughing penalties, and Rittich was penalized for leaving the crease.
"I mean, he was fighting and everything today," Coyotes captain Oliver Ekman-Larsson said of Kuemper. "He does it all, right? He's been unbelievable all year, and it's a lot of fun playing in front of him."
Arizona went on the power play afterward but didn't score, finishing 0-for-4 with the man-advantage. The Coyotes are 1-for-26 on the power play in their past eight games.
Video: CGY@ARI: Rittich maneuvers, makes save on Soderberg
They said it
"When we went down two goals, it's tough to try to battle back every game. We've managed to get a few wins coming back, but it's no recipe for success. We've got to change it and we've got to figure it out." -- Flames forward Johnny Gaudreau
"It's the kind of [physical] game you get when you play those guys. It's high-tension, and it's a playoff atmosphere, which is great. I thought we stepped up great. We like playing in these games." -- Coyotes defenseman Jason Demers
Need to know
Calgary played its first game without defenseman TJ Brodie, who is out indefinitely following a medical episode at practice Thursday. Brodie collapsed during a drill, started convulsing and was removed on a stretcher and taken to the hospital, where he had tests before being released later that day. … Arizona played the first of seven Pacific Division games in an eight-game span. … It was Crouse's first multipoint game of the season. … The Coyotes are 12-5-2 in their past 19 games after starting the season 0-2-0.
Flames: At the Vegas Golden Knights on Sunday (7 p.m. ET; NHLN, SN, TVAS, ATTSN-RM, NHL.TV)
Coyotes: Host the Los Angeles Kings on Monday (9 p.m. ET; ESPN+, FS-A PLUS, FS-W, NHL.TV)
Video: Kuemper makes 37 saves, Coyotes shut out Flames