Andrew Mangiapane scored, and Jacob Markstrom made 24 saves for the Flames (8-7-1).
"It's time to put this thing to bed and take charge and take control of what we can," Calgary coach Geoff Ward said. "We certainly can control the way we start, we certainly can control how we pay attention to details, how hard we compete, how much we care. All those things are certainly within our control. It's time for us to start [caring] about it."
Jordie Benn one-timed a pass from Horvat on a 2-on-1 by Markstrom on the game's first shot, 1:46 into the first period, to put Vancouver up 1-0.
Horvat gave Vancouver a 2-0 lead at 7:37 of the second period. He knocked down a stretch pass from Quinn Hughes and evaded Markstrom's poke check in the slot before sliding the puck into the vacated net.
Markstrom was successful breaking up a similar play against Tanner Pearson earlier in the period.
"That was a pretty big collision with him and Tanner," Horvat said. "I just tried to get my head up as quick as possible and thankfully he didn't run me over. Thankfully it went in too. He's done that a couple times, even when he played for us, so it was vintage 'Marky' there."
Mangiapane made it 2-1 at 18:13 when he cut wide around Hughes and wrapped the puck around Holtby's pad. Miller scored on a one-timer by Markstrom's glove 15 seconds later to go up 3-1. Nate Scmhidt scored on a rebound to extend the lead to 4-1 at 19:05.
"I really thought that if we can get through the period at that score or better, we're gonna have a good night, but the next shift after we scored one, they got it back and got another one," Calgary captain Mark Giordano said. "Tough to swallow those goals at the end there."