After Philipp Grubauer stopped Michael Frolik at one end, the puck went up ice where a pass from Mikko Rantanen sprung MacKinnon down the left wing and he fired a shot into the top corner on Mike Smith.
Matt Nieto and J.T. Compher also scored for the Avalanche.
Rasmus Andersson and Sean Monahan replied for the Flames.
The series continues on Monday night with Game 3 at the Pepsi Center in Colorado.
Smith finished with 36 stops. Grubauer had 35 saves.