Roy, who played just under 12 minutes in the first three quarters, combined with Oden for the comeback and finished with 12 points.
Oden's slam dunk and Roy's layup narrowed Denver's lead to 86-85. Roy added a pair of free throws to put Portland ahead, but Chauncey Billups answered with a 3-pointer to make it 89-87 for Denver.
Oden hit a pair of free throws to tie it, before a layup and another foul shot to make it 92-89 for Portland.
Oden fouled out with 2:27 left but Roy's layup made it 94-89 and Portland led the rest of the way.
The Nuggets returned to exhibition play after a two-game series against the Pacers in Asia last week. Indiana won the first game 126-104 In Taipei, while Denver won the second 126-112 in Beijing last Sunday.
The Blazers were without forwards LaMarcus Aldridge, who has a knee contusion, and Rudy Fernandez, who has back spasms. Juwan Howard, acquired by the Blazers as a free agent in the offseason, started in Aldridge's place.
Carmelo Anthony was handed a technical foul early when he kicked a ball after being called for an offensive foul against Steve Blake.
But Anthony appeared ready for the regular season from the start, with 16 of his points in the first half. He finished with 21, sitting out the third quarter.
The Blazers, still tinkering with lineups, got energy from guard Jerryd Bayless, who drove for a layup that gave Portland a 26-23 lead.
The Blazers stretched the lead to 44-33 on Joel Przybilla's tip shot but the Nuggets narrowed it to 51-48 at the break.
Denver went up 58-57 on Nene's dunk midway through the third quarter, and traded the lead with Portland until Billups and Anthony made consecutive layups to give the Nuggets a 67-62 lead.
Arron Afflalo's 3-pointer made it 84-72 for Denver in the fourth quarter.
But the Blazers closed the gap when Greg Oden made a layup over two defenders and added a free throw to make it 84-79.
Oden and Roy had been played sparingly through the first three quarters after both collected early fouls.