Roy, who had 26 points against Memphis on Monday, picked up the Blazers in the second half as they appeared to be waning. He kept driving to the hoop, drawing fouls and hitting 11-of-13 free throws.
Less than a week ago, Roy was in a 12-of-53 shooting slump, and what he called the "lowest point of the season." A visit with coach Nate McMillan changed his mind-set.
"He said quit thinking so much, he said go out there and be aggressive," Roy said. "That's what I did tonight."
LaMarcus Aldridge added 14 points and 10 rebounds and reserve James Jones scored all of his 14 points in the first half for Portland, which lost the previous five meetings against Miami.
"Travis stepped up, LaMarcus played big and James Jones gave us a lift off the bench," Roy said. "Everybody played well for us."
Dwyane Wade had 21 points, 10 rebounds and nine assists for the Heat, but he shot 9-for-26 from the field. Rookie Daequan Cook scored a season-high 20 points and Ricky Davis added 18.
Shaquille O'Neal had just eight points and 10 rebounds in 22 foul-plagued minutes for Miami. The Heat, who dropped to 3-15 on the season, shot just 54.2 percent from the line.
Portland led by 16 in the second half but saw its lead dwindle to one in the fourth as Cook, who was 9-of-11 from the field, Wade and Davis warmed up in the second half. However, the Blazers outscored Miami 24-19 down the stretch.
Portland had a 15-point first-half lead, and was up 60-44 in third, but the Heat went on a 10-3 run to pull within nine.
O'Neal picked up his fourth foul midway through the quarter and headed for the bench. Heat coach Pat Riley kept Alonzo Mourning on the bench and went with a lineup that had Udonis Haslem and Davis as the tallest players for a time.
With the small lineup, Miami scored six straight points to pull to 67-60. Dorell Wright got the Heat within 75-71 just before the end of the quarter.
"We were getting blown out," a frustrated Riley said. "Shaq was in foul trouble so it was hard to get any continuity. (The small lineup) got us back in the game."
Wade, who had 11 points through three quarters, scored back-to-back baskets to pull Miami within 88-87, but Steve Blake hit a 3-pointer for the Blazers and Aldridge made a jumper from the top of the key.
Roy's layup at 2:31 put Portland up 97-90. Outlaw dunked on Cook, drawing a foul for the 3-point play to put the Blazers up by 10 with 1:56 remaining.
Wade has given the Heat a lift since returning from injury, averaging 20 points, 5.4 assists, 3.5 rebounds and 2.3 steals entering the game, but Miami is just 3-10 with him in the lineup.
"Take a look at our last five losses and its about our offense," Riley said. "It's that we can't guard anybody right now."
Riley and Blazers coach Nate McMillan were miked during the game for the TNT broadcast. Each had a TV interview during the game. ... Portland C Joel Przybilla left in the first minute of the game after O'Neal knocked him to the floor, then drove the ball into his face as he fell on him. No foul was called and Przybilla returned in the second quarter. ... Portland's last win against the Heat was on Nov. 23, 2004.