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.
The Avalanche finished 5-3 on the longest continuous homestand in franchise history, and O'Reilly played a big part. The third-year center has four goals and three assists in the last three games.
"I don't think I've had this many points in a row," O'Reilly said. "My linemates make me look good."
The Avalanche lost two of the first three games on the homestand before rebounding to win four of the last five. After routing New Jersey, they beat resurgent St. Louis on Friday before facing Detroit.
"Hopefully, we're turning the tide a bit here and it's nice to get some wins at home," Galiardi said. "We talked about it before the New Jersey game we needed somewhere to start, something to build off of and since then we've been playing some pretty good hockey."
Galiardi played his part with his third goal of the season.
With Detroit on the power play, Galiardi knocked the puck away from Darren Helm in the neutral zone and Landeskog picked it up. He 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.
"I poked it away from the guy, Landy had good speed and he put it right in my wheelhouse," Galiardi said.
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.
"He's finding a little bit of a groove offensively," Colorado coach Joe Sacco said. "He's playing well right now."
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.
"We seemed to get things going in the third," Cleary said. "We got the big goal to get back into it and then we give up the short-handed goal."
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.
"I was in the right place at the right time," O'Reilly said. "Landeskog made an amazing play, I just wanted to get it off quick and beat the goalie."
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.
The Avalanche outshot Detroit 19-4 in the second.
"They were better than us in the second. We were better in the third," Detroit coach Mike Babcock said. "We made the mistake and you saw what happened."
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.
- 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.