Rene Bourque scored on the power play 1:42 into the third period to give the Avalanche their first lead at 2-1. Nathan MacKinnon slipped a pass from behind the net to Bourque, who beat goalie Louis Domingue for his 300th NHL point.
At 11:24, Duchene scored from the top of the right circle to make it 3-1. His wrist shot went in off Domingue's glove for his fifth goal, all of them in the past four games.
"Matt was good tonight. Hard on pucks, and he kept his feet moving down low and made some plays that end up being goals," Colorado coach Jared Bednar said. "We played well (against Winnipeg), but you just have to stick with it, build chance, and if you do, you're eventually going to get a goal, and that's what happened."
Radim Vrbata and Tobias Rieder scored for the Coyotes (2-6-0), who have lost six of seven. Domingue made 31 saves and is 1-5-0 in six starts since No. 1 goalie Mike Smith was injured Oct. 18.
Max Domi set up Vrbata with a pretty pass at the hash marks for a goal at 14:57 of the first period to give Arizona a 1-0 lead. It was Vrbata's fourth goal in the past five games.
"Vrbata's goal is a good play for us, but we didn't have much push after that," Coyotes coach Dave Tippett said. "That line was pretty good, but not much else."
Duchene tied it 1-1 at 5:51 of the second period. Mikhail Grigorenko missed a deflection chance in front of the net but retrieved the puck behind the net and centered it to Duchene for a spin-o-rama backhand shot past Domingue.
Rieder scored his second goal of the season with 4:04 remaining to make it 3-2.