Hanifin lifted a backhand through a screen past Korpisalo 47 seconds into the third to tie it 3-3, and Coleman slid a rebound in after Hanifin broke his stick on the initial attempt off the rush to put Calgary up 4-3 at 8:57.
Coleman's goal came after Markstrom made a right pad save on Mathieu Joseph's breakaway at 6:32.
"We probably don't win the game without a lot of his big saves tonight, but that one stands out with the tie game and the circumstances we were in," Coleman said. "He's been great all year. Tonight was no different. He's just really calm and composed, and it seems it just bleeds through our locker room the way he plays back there."
Sharangovich shot a loose puck past Korpisalo for the 5-3 lead at 15:45, and Coleman scored into an empty net at 17:12 for the 6-3 final.
"There wasn't much going for me in the first couple [periods]," Coleman said. "Our line's pretty positive in the sense that we can flip that switch and get it going when we need to. That reinforcement of positivity usually keeps us going, and I thought we played a great third period. That was collective as a team. Take myself out of it. I thought guys made some really big plays when we needed them, 'Marky' some big saves and a big win."
Jacob Bernard-Docker's point shot went in off the shin pad of Calgary defenseman Yan Kuznetsov to put Ottawa up 1-0 at 4:09 of the first period.
Connor Zary tied it 1-1 at 4:53 with a wrist shot over Korpisalo's glove from inside the right face-off circle.
"We score a goal, you're looking to have a strong shift after, and then when you get scored on right away after, it's not good," Ottawa defenseman Thomas Chabot said. "Everybody's aware of that. It's about us in here and there's nothing else to be said. It's simple as that. It's this group of guys. It's us that goes out there and plays the games. We can do video, we can do systems, whatever it might be. At the end of the day, it's us going out there and executing the game plan."