Roy ended with 21 points off the bench for the Blazers, who snapped a two-game skid and have won five of their last seven games.
LaMarcus Aldridge tallied 30 points and eight rebounds for Portland, which sits percentage points ahead of New Orleans for the sixth spot in the West. Wesley Matthews donated 18 points.
Dirk Nowitzki played through a left shoulder injury to record 28 points and 11 boards for the Mavericks, who are 2-4 since an eight-game winning streak.
Shawn Marion and Rodrigue Beaubois chipped in with 18 and 16 points, respectively, for Dallas, which fell to third in the conference standings. Jason Terry added 14 points off the bench in defeat.
The Blazers held their largest lead of the fourth at 100-94 on Aldridge’s slam with 3:51 remaining.
But a Nowitzki jumper and a Terry three-pointer cut the gap to 100-99 with 2:56 to play. Roy was off the mark with a jumper at the other end, but Dallas failed to take advantage.
Roy made two from the line with 1:38 left to give Portland a 102-99 edge. Jason Kidd, who had a game-high 14 assists, turned the ball over on Dallas’ ensuing possession. Roy then made a seven-foot jumper to make it a five-point game with 47.8 seconds to go.
Nowitzki made a pair of free throws to cut the gap to three, 104-101, and Aldridge missed a jumper for the Blazers. The Mavs dribbled the ball up the court and took a timeout with 8.8 ticks remaining.
Dallas gave the ball to Nowitzki, who was off the mark with a three-pointer from the corner as time expired.
The Mavericks came out of the gates on fire, making their first 11 shots of the game. Portland, though, kept it close and got within three, 32-29, by the end of the period. The Mavs shot 73.7 percent from the field over the first 12 minutes of action.
Dallas cooled off a bit in an evenly played second stanza, which resulted in the Mavericks holding a 56-53 edge at the half.
Trailing by six, 76-70, with under four minutes left in the third, Portland closed the period out on a 12-4 run to go in front. Roy tallied seven points during the burst, including a jumper to make it 82-80 heading to the fourth.
Dallas had won three straight versus the Blazers…The Mavericks were without center Brendan Haywood (back)…The Blazers started a three-game homestand on Tuesday…Dallas shot 59.7 percent from the field, while Portland made 47.1 percent of its shots…The Mavericks turned the ball over 15 times, leading to 22 Portland points…Dallas fell to 23-10 on the road this season.