Hudler gave Calgary the lead when he battled for position in front of Giguere and then flicked a backhand through the goalie's legs to make it 3-2.
It was small consolation for Hudler, who was disappointed after he was left off the Czech National Team for next month's Olympics in Sochi, Russia.
"Right before the game we took a little walk with Jiri. He knows that people sit in the room, there's debate, you get picked, you don't get picked," Flames coach Bob Hartley said. "Obviously, everyone wants to be in the Olympics to represent their country so you're disappointed. But we saw that he's a pro."
The Avalanche got a power play at the end of the period but couldn't capitalize.
They tied it on Stastny's 12th goal of the season at 9:33 of the third.
The Flames took a 1-0 lead just 1:08 into the game. Monahan took a shot from the right circle that Giguere saved, but the rebound went off McGinn and into the net.
It was Calgary's second goal in the last five games and its first lead since beating St. Louis two weeks ago.
The celebration didn't last. MacKinnon tied it on the power play six minutes later when his shot from the side of the crease went off Ramo and through the goaltender's legs into the net.
The Flames took a bench minor for too many men on the ice, MacKinnon struck again. Stastny sent him a pass to the slot and MacKinnon buried it to make it 2-1 at 14:32 of the first.
NOTES: Colorado's Gabriel Landeskog extended his points streak to seven games with his 100th assist. ... Avalanche D Nate Guenin (ankle) was out after getting hit with a puck Saturday. Tyson Barrie took his place in the lineup. ... Flames RW David Jones was a scratch. He has one assist in his last 15 games. ... Colorado D Ryan Wilson was sent to Lake Erie of the AHL for a two-week conditioning assignment. Wilson has missed 22 games with a back injury but has been a healthy scratch for the last two games.