Kuemper made 30 saves for the Coyotes, who are 5-2-0 in their past seven games.
"Kuemper kept us in it and we were able to come out and have a big third," Coyotes defenseman Jakob Chychrun said. "We knew if we won the period, we won the game so go out and put a good 20 together and come out on top."
Arizona outshot Vancouver 20-5 in the third period, tying the game 1-1 on a power play at 10:34 when Chychrun's point shot deflected in off the stick of Canucks forward Jay Beagle.
Crouse put the Coyotes ahead 2-1 at 15:45 with a far-side wrist shot over Markstrom's glove from the bottom of the left face-off circle after a pass from Josh Archibald from behind the net.
Bo Horvat scored, and Antoine Roussel had two assists for the Canucks, who are 2-5-2 in the past nine games. Markstrom made 35 saves.
"When you have the lead you want to protect it and don't want to be gunning for offense late," Horvat said. "I thought we sat back a little bit too much and they kind of took it to us."
Horvat gave the Canucks a 1-0 lead at 9:47 of the first period after a nice play by Markus Granlund along the boards to create a turnover. Granlund passed the puck between his legs to Roussel, who drove the net and backhanded a cross-ice pass from the bottom of the right face-off circle to Horvat for a one-timer before Kuemper could get across.
Vancouver was 0-for-3 on the power play while leading 1-0, and is 2-for-30 in the past nine games.
"We've said it a lot lately, a power-play goal would have been nice tonight," Canucks coach Travis Green said. "It probably would have been the difference in the game if we could have got one in the first two periods."