Travis Outlaw had 19 points for the Blazers, who improved to 20-8 at the Rose Garden this season and are 4½ games out of the last playoff spot in the West.
"We were scrapping and getting out after loose balls, Roy said. "It's great to get a win, but we're not there yet."
Nick Collison scored on a tip-in to get Seattle within 89-86 with 30.4 seconds left.
After Aldridge made one of two free throws for the Blazers, Damien Wilkens dunked on the other end with 7.7 seconds left. But Jarrett Jack, who had 15 for Portland, sealed the victory with two free throws.
"Our guys played really hard and really well, but just not hard enough," Seattle coach P.J. Carlesimo said.
Roy had missed practice Wednesday because of a viral chest infection and a minor ankle injury. He struggled against the Sonics, going 2-for-8 from the field in the second half and going scoreless in the fourth quarter.
Collison had 13 points and 14 rebounds for the Sonics. Jeff Green added 13 points and nine rebounds.
Steve Blake hit a 3-pointer at 2:02 in the second quarter to put Portland up 47-39. Roy scored on a give-and-go with Jack to take the lead to double digits right before halftime.
Durant hit a 3 and then converted a layup to make it 69-66. Green tied the game at 70 in the fourth on a jumper and put Seattle up 74-73 with two free throws.
"It seemed like they just always had a little bit of a lead and we could never really take over," Collison said. "Each time we needed a stop, we couldn't get it."
- Portland No. 1 draft pick Greg Oden unveiled a new Mohawk haircut when he came out to the Blazers bench.
- Seattle C Robert Swift left with a right knee strain in the second quarter.
- Kevin Boss, tight end for the Super Bowl champion New York Giants, was honored after the first quarter.
- Blazers F James Jones, out with a knee injury, said he hopes to return next week.