Roy converted two free throws with 1:38 to play and then hit a jumper with 47.8 seconds on the clock that put the Trail Blazers ahead 104-99 and nailed down their fifth win in seven games.
LaMarcus Aldridge led the Blazers with 30 points and eight rebounds. Wesley Matthews scored 18.
Portland leads New Orleans in the battle for the sixth playoff spot in the Western Conference.
Dirk Nowitzki led Dallas with 28 points and 11 rebounds despite an injured left shoulder. Shawn Marion scored 18 points for the Mavs, who have lost four of their last six and dropped into third place in the West.