O'Reilly had a goal and an assist at BB&T Center, giving the forward five goals and two assists in the past six games.
"He's been outstanding," said Avalanche forward Jamie McGinn, who scored off an O'Reilly assist in the second period for a 3-0 lead. "He's been consistent every game. He works hard, on and off the ice, and it's paying off."
The Avalanche are 20-1-1 when leading after one period and 27-0-2 when leading after two, but they were holding on in the third. Colorado was outshot 20-6 and 15-0 over the final 13:13.
"We were outstanding in the first two periods; unfortunately the third was not as good, and this is something we have to be better at," Avalanche coach Patrick Roy said. "I thought that was a great test for us in some ways because we were up by three goals, we knew they were going to put pressure on us, and I thought it was a good opportunity to play a strong third period in our own end. That wasn't the case.
"We didn't move our feet as much in the third as we did in the first two. Our decisions weren't as good. We need to learn to win those games, like 4-1 and 5-1, and bear down on our chances. But, you know what, a win is a win, and this is a very important two points for us."
Paul Stastny scored for Colorado, which won for the sixth time in eight games (6-1-1). Matt Duchene had two assists. Alex Tanguay, back in the lineup after missing 36 games because of knee and hip injuries, had an assist on Stastny's goal.
"I was very happy with him," Roy said of Tanguay. "He moved the puck well. He's a difference-maker. You know the difference when he's out there."
Goalie Semyon Varlamov bounced back after being pulled in his previous start by making 34 saves. Varlamov, who was replaced early in the second period of a 5-2 loss Tuesday against the Toronto Maple Leafs after allowing three goals on 10 shots, made some big stops early in the second period but saved his best for last. He made three saves in a 10-second span after Florida got within 3-2 late in the third period.
Colorado began a three-game road trip that continues Saturday against the Tampa Bay Lightning and ends Tuesday against the Dallas Stars.
Scottie Upshall scored twice, including his 100th NHL goal, but the Panthers had a two-game winning streak end.
Tim Thomas, making his 10th start in the Panthers' past 11 games, stopped 22 shots. Two of his saves came on breakaways when he denied O'Reilly in the first period and Nathan MacKinnon, the first pick in the 2013 NHL Draft, in the second.
A second matchup between the top two picks in last year's draft didn't materialize because a lower-body injury kept Panthers center Aleksander Barkov out of the lineup.
MacKinnon and Barkov played Nov. 16 when Florida won 4-1 at Colorado. The Avalanche won here for the first time in four tries.
Veteran Scott Gomez replaced Barkov in the lineup, making his first appearance since Dec. 28. Gomez had four shots on goal and won 10 of his 13 faceoffs.
"He was enthusiastic in the room and on the bench," Panthers interim coach Peter Horachek said. "He wanted to win and he wanted to get back into the game. He gave a good effort for being out for that long."
The Panthers went 0-for-2 on the power play, extending their franchise-record streak of games without a power-play goal to 12. They've failed on their past 38 power-play attempts, breaking the team record of 37 set in 2010-11.
The biggest problem for Florida, however, was the slow start.
"We didn't have our legs in the first period," Upshall said. "They got some lucky bounces, got some goals, they're a good team. Varlamov played really well in the first couple of periods and made us work extremely hard in the third to come back."
Florida was playing at home for the only time in an eight-game stretch. The Panthers went 2-1-0 on a three-game road trip that ended Tuesday with a 4-3 victory against the Buffalo Sabres and will play their next four on the road, starting Sunday against the Detroit Red Wings.
O'Reilly opened the scoring 1:34 into the game when he set a career high with his 19th goal of the season. After Duchene skated around the net and his backhand drifted to the front, O'Reilly fired a shot that was deflected and went wide. He picked up the loose puck behind the net and quickly brought it back and put it home before Thomas could get back into position.
Stastny extended the lead to 2-0 at 16:13 after Gabriel Landeskog intercepted a clearing attempt at the half boards. Landeskog fed Stastny, who was standing alone in front of Thomas and spun around before sliding a backhand into the open net.
"They came out hard at us and we had a hard time controlling them there in the first period," Thomas said. "They really put on the forecheck on us, basically did what we would have liked to have done to them. From there, we're battling back to get into the game. In the third period there, we made quite a push, but ultimately couldn't get the three goals we were down back."
McGinn padded the lead with seven minutes left in the second period after Thomas got his stick on O'Reilly's pass from behind the net. McGinn outmaneuvered defenseman Erik Gudbranson for the loose puck and put a quick shot past Thomas.
Upshall got Florida on the board at 5:18 of the third period with his second goal in his past 21 games. He made it 3-2 with 1:43 left when Tom Gilbert's slap shot from the point went off his leg.
Colorado secured the victory by holding Florida without a shot in the final minute with Thomas on the bench for an extra attacker.
"We started great," O'Reilly said. "We skated well, played real well, took some chances. We probably could have given ourselves a 4-0 lead at times. We started good and that start won it for us. At the end, they had chance after chance. We have to be a little bit better and make sure we don't give up opportunities like that, especially late in the game. It was a good win for us, we got the points."
|Ryan O'Reilly (19) ASST: Matt Duchene (25)|
1 - 0 COL
|Paul Stastny (14) ASST: Gabriel Landeskog (23), Alex Tanguay (7)|
2 - 0 COL
|Jamie McGinn (11) ASST: Ryan O'Reilly (16), Matt Duchene (26)|
3 - 0 COL
|Scottie Upshall (8) ASST: Tomas Fleischmann (17), Tom Gilbert (19)|
3 - 1 COL
|Scottie Upshall (9) ASST: Sean Bergenheim (5), Tom Gilbert (20)|
3 - 2 COL
|Power Play %||15.0%||16.3%|
|% on Road||17.4%||15.9%|
|% at Home||12.7%||16.5%|
|Nick Holden Hooking against Jonathan Huberdeau|
|Mike Weaver Hooking against Pierre-Alexandre Parenteau|
|Shawn Matthias Tripping against Max Talbot|
|Nathan MacKinnon Hi-sticking against Dmitry Kulikov|