Radim Vrbata had the other goal for the Canucks and Ryan Miller made 24 saves to get the win as Vancouver (14-6-1) celebrated assistant captain Daniel Sedin's 1,000th NHL game with a hard-fought win.
Bo Horvat had his first three NHL assists, while Derek Dorsett added two of his own.
Corey Crawford finished with 26 stops for Chicago (12-8-1) in the loss.
After giving Vancouver a 1-0 lead in the first period, Hansen snapped a 1-1 tie with his fourth goal in the last three games at 6:24 of the third. Dorsett chipped the puck down the boards into the Chicago zone before directing a shot toward the goal that Hansen deflected into the top corner for his eighth of the season.
Prior to Hansen's second goal, Nick Bonino had a great chance to give the Canucks the lead about five minutes into the third. But his shot from the side of a wide open net hit the far post and stayed out.
Chicago had a power play with about eight minutes left in the third, but Vancouver's penalty kill was effective. The Blackhawks, playing their second of a back-to-back and third game in four nights, pressed for the tie late, but were caught out on a rush when Vrbata scored his 10th of the season at 17:36.
Hansen then won a race for the puck and scored into an empty net with 42 seconds left for the hat trick.
Chicago had won three straight — including Saturday night's 7-1 thrashing of the Edmonton Oilers — and five of their last six, but was down 1-0 after the first period before imposing its will as the second wore on.
Kris Versteeg, who had two goals and four assists in his last three games, scored his seventh of the season tie things at 7:55 on the power play, deflecting a point shot from Duncan Keith past a helpless Miller.
Hansen wired a shot off a face off earlier in the period that Crawford saved before the Blackhawks goalie snagged Vrbata's deflection with his glove.
The Canucks had a great chance to restore the lead on a power play of their own later in the period, but Crawford robbed Henrik Sedin with the heel of his skate after taking a pass at the side of the net from Daniel Sedin.
Vancouver opened the scoring at 13:13 of the first period on the power play when Dorsett's pass off the rush glanced off Horvat's stick to Hansen, who buried his sixth of the season and third in as many games over Crawford's blocker.
The assist was Horvat's first in the NHL after scoring his first goal in Thursday's 4-3 shootout loss to the Anaheim Ducks.
Notes: Henrik Sedin played his 1,000th game with Vancouver in March. ... Canucks defenseman Dan Hamhuis sat out with a lower-body injury after getting hurt on Thursday. ... Canucks forward Alexandre Burrows missed his second straight game with an upper-body injury. ... The Canucks host Cory Schneider and the New Jersey Devils on Tuesday before starting a season-high seven-game road trip in Columbus against the Blue Jackets on Friday. The trip will also take Vancouver to Detroit, Washington, Pittsburgh, Toronto, Ottawa and Montreal. ... The Blackhawks continue their six-game road trip on Wednesday night against the Colorado Avalanche.