VANCOUVER -- Dillon Dube had a goal and two assists, and the Calgary Flames ended a three-game losing streak with a 6-2 win against the Vancouver Canucks at Rogers Arena on Saturday.
Derek Ryan and Milan Lucic each had a goal and an assist, and David Rittich made 25 saves for the Flames (28-22-6), who opened a four-game road trip by moving within three points of Vancouver for first place in the Pacific Division.
"It was probably our most complete game of the year," Lucic said.
[WATCH: All Flames vs. Canucks highlights
Calgary, which was already without defenseman Mark Giordano because of a hamstring injury, lost defenseman Travis Hamonic to an undisclosed injury 1:34 into the second period. Hamonic is second to Giordano in average ice time (21:24).
Flames coach Geoff Ward didn't have an update after the game, but he said he liked how his team responded after losing three straight at home.
"We're trying to learn how to be a contending team, and a lot of things that happened in this hockey game we can draw on and talk about moving forward," Ward said. "It was a real big steppingstone."
Video: CGY@VAN: Ryan sneaks wrister home from the circle
Jacob Markstrom made 26 saves for the Canucks (30-21-5), who have gone four straight without a victory (0-3-1) and had their nine-game home winning streak end.
Vancouver forward Brock Boeser left at 2:30 of the third period with an upper-body injury.
"He is going to be out. I don't know how long. For a little bit," Canucks coach Travis Green said. "We will know more [Sunday]."
Tanner Pearson gave Vancouver a 1-0 lead 34 seconds into the game on the first shot.
"There's no panic there," Ward said. "There's 59-and-a-half minutes left, so we're certainly not going to sag on something like that. Guys were talking about, 'Let's go, let's go, next shift up, let's do something about it.' I thought emotionally our guys were checked in, I thought their engagement was in the right place and they did a good job coming right off that goal."
Ryan tied it 1-1 at 4:20 with a wrist shot through a screen from the top of the face-off circle, and Matthew Tkachuk gave the Flames a 2-1 lead at 12:08 on a breakaway rebound that went in off his skate.
"We got a bit too much into a track meet with that team," Pearson said. "That's the kind of game they wanted. That doesn't give us success. We have to get back to the way we play and nip this losing streak in the bud."
The Canucks tied it 2-2 with 1:47 left in the first period after Tkachuk's pass behind the net took a bounce off the boards to Adam Gaudette in front.
Video: CGY@VAN: Gaudette pots wrister off strange carom
Dube made it 3-2 at 2:51 of the second period with a screened wrist shot from the top of the circle.
"I didn't even look, just kind of shot it and went in," said Dube, who set an NHL career high with three points on the Flames fourth line with Ryan and Lucic. "We got hot. We had a stint there earlier [this season] where we were really good and I think we found it again, so it's just a really good confidence booster for our line."
Lucic made it 4-2 with a redirection for a power-play goal at 6:48 of the third period.
Sean Monahan converted a 2-on-1 with Johnny Gaudreau (two assists) at 16:01 to make it 5-2.
Video: CGY@VAN: Monahan nets Gaudreau's feed for pretty goal
Tobias Rieder scored into an empty net with 2:11 left for the 6-2 final.
"That was a playoff-type period for us going in with the lead 3-2," Tkachuk said. "Just played a really good brand of hockey, played in front of them and made them come through a bunch of us. It was a real complete third period."
They said it
"This is the homestretch now. We're in a sprint to the finish line, so we have to be ready each and every road game, and now it's up to us to respond positively to this win and keep doing the things we were doing in this game." -- Flames forward Matthew Tkachuk
"In a way, they looked like a team that had been in this situation before. They looked like the more mature team." -- Canucks coach Travis Green
Need to know
Flames forward Mikael Backlund had two assists. … Calgary forward Elias Lindholm extended his point streak to six games (two goals, four assists). … Tkachuk has six points (three goals, three assists) in his past six games. … Canucks defenseman Quinn Hughes has nine points (four goals, five assists) in his past nine games.
Flames: At the San Jose Sharks on Monday (10:30 p.m. ET; NBCSCA, SNW, NHL.TV)
Canucks: Host the Nashville Predators on Monday (10 p.m. ET; SNP, FS-TN, NHL.TV)
Video: Dube's three points lift Flames past Canucks