Paul Stastny and T.J. Galiardi also scored, and Gabriel Landeskog added two assists to help Colorado win its third straight. Henrik Zetterberg and Johan Franzen scored for Detroit, and Ty Conklin made 31 saves.
Galiardi got the winner while Colorado killed off Ryan Wilson's minor penalty. Landeskog carried the puck into the Detroit zone, dropped it to the trailing Galiardi and he beat Conklin with a slap shot from the top of the circle with 10:38 left. It was Colorado's fourth short-handed goal of the season.
The Red Wings pulled Conklin for an extra skater with a minute left and O'Reilly scored into the empty net with 34 seconds left. It was his sixth goal of the season.
Detroit was down 2-1 after two and came out strong in the third looking for the equalizer. Zetterberg got it 5:07 into the period when he squeezed a backhander between the post and Varlamov while the goalie was screened by Dan Cleary. It was Zetterberg's sixth goal of the season.
The Avalanche trailed 1-0 after one but quickly took the lead in the second. O'Reilly tied it 26 seconds into the period when Landeskog stole the puck from behind the net and fed his linemate for a one-timer.
Red Wings defenseman Jonathan Ericsson went off for cross-checking 17 seconds later and the Avalanche took advantage. Matt Duchene floated a pass to the front of the net and Stastny knocked it at 2:11. It was his eighth goal of the season.
Franzen got Detroit on the board on a power-play goal with 4:52 left in the first. Datsyuk grabbed his own rebound, sent a backhand pass to the opposite circle and Franzen buried it for his 12th goal of the season.
NOTES: Stastny left the game in the third period because of a torso injury. He didn't return. .. Colorado D Erik Johnson returned to the lineup after missing five games because of a groin injury. ... Colorado RW Chuck Kobasew was scratched due to a leg injury. ... Datsyuk has 14 points (six goals, seven assists) in his last nine games. ... The Red Wings outscored opponents 28-12 during their winning streak.