Andrew Mangiapane scored with 2:07 left for the Flames (30-14-6), who lost for the first time since Jan. 27. Calgary outscored opponents 42-15 while matching its record with a third 10-game streak. It allowed two or fewer goals 12 times in winning 13 of 15.
"Good teams get beat and good teams have bad nights, but to be a good team you've got to respond and be able to learn from these games versus get stuck in a rut," Flames forward Blake Coleman said. "We had won 10 in a row for a reason. We're a really good hockey team, and this is part of the growth of our group, is being able to respond after what I view as an embarrassing loss."
Markstrom made 18 saves before leaving with 1:46 left in the second period to have a skate blade replaced. Dan Vladar replaced him and gave up two goals on three shots in the period, including a Miller penalty shot with five seconds left that made it 5-0. Vladar played the third period and finished with 13 saves.
"I certainly didn't expect it to go like that," Vancouver coach Bruce Boudreau said. "We'll take it. It certainly doesn't happen often when you're playing such a good hockey team, but everything seemed to be going right for us."
Demko made breakaway saves on Blake Coleman and Mangiapane in the first period, and Pettersson gave the Canucks a 1-0 lead on a power play at 3:42 of the second period with a far-side one-timer from the right face-off dot.
Miller made it 2-0 with a power-play goal at 10:18, using a Boeser screen to score on a wrist shot from the left face-off dot.
"Five-on-5 the first two periods were really good," Calgary coach Darryl Sutter said. "Took two dumb penalties that cost us, and missed like two or three breakaways or Grade A's in the first period. Give the other team credit, they had a lot of energy and lot of skill."