Dylan Guenther and Lawson Crouse each had a goal and assist, and Logan Cooley had two assists for the Mammoth (40-30-6), who swept a three-game road trip after losing their previous two games.
Karel Vejmelka made 19 saves to help Utah improve to 8-1-1 in its past 10 road games despite missing top pair defenseman MacKenzie Weegar, who was a late scratch and is day-to-day with an upper-body injury.
Linus Karlsson scored twice in his 100th NHL game, Filip Hronek had two assists, and Nikita Tolopilo made 17 saves for the last place Canucks (22-46-8), who are 1-7-0 in their past eight games.
Karlsson put the Canucks ahead 1-0 at 2:28 of the first period, skating unchecked off the right boards to the hash marks before backhanding a shot past Vejmelka’s glove.
Kailer Yamamoto tied it 1-1 at 13:34 with a between-the-legs deflection over Tolopilo’s pad after Cooley intercepted a Vancouver defenseman Victor Mancini pass along the boards and threw it toward the net.
Keller put Utah ahead 2-1 off the rush at 18:30, taking a drop pass from Crouse and skating in for a wrist shot from inside the top of the left circle. The shot deflected off the stick of Canucks defenseman Zeev Buium and past the glove of Tolopilo and in off the post.
Karlsson tied it 2-2 at 2:05 of the second period by deflecting a Mancini point shot past Vejmelka from the high slot for his 15th goal of the season.
Keller restored the lead 3-2 with a power play deflection from the edge of the crease of a Guenther one-timer at 7:04. The goal was initially waived off for a high stick, but video review determined Keller’s stick was “at or below the height of the cross bar” when he redirected the puck.
Guenther made it 4-2 at 11:55 after a passing play off the rush. Cooley left Utah defenseman John Marino alone in the slot, stranding Tolopilo with a backdoor pass that Guenther put into an open net from just above the goal line for his 38th goal of the season.
Jake DeBrusk pulled the Canucks to 4-3 when Hronek’s power play point shot bounced in off his leg at the side of the net 20 seconds into the third period.
Crouse scored at 1:32 to make it 5-3 after Tolopilo’s pass was intercepted by Keller on the right boards for a pass to Crouse and a high glove snap shot from inside the top of the right face-off circle.
Marco Rossi made it 5-4 on a power play at 4:40 with a low shot from just inside the blue line that bounced over the right pad of Vejmelka through traffic.
Liam O’Brien, back in the lineup for the first time in 19 games, made it 6-4 on a breakaway from the top of the circle at 11:45, deking around Tolopilo for a backhand that hit the post and bounced in off the outstretched arm of the goalie.
Keller scored into the empty net with 53 seconds left for the 7-4 final and his third career hat trick.