The Bulldogs (15-8, 5-3 West Coast Conference) have won 16 straight and 30 of 31 against the Pilots.
The Bulldogs trailed 34-28 at intermission but then used a 23-7 run to take a 51-41 lead.
Portland closed to within 53-51 with 5:33 to play but couldn't get any closer.
Sacre gave Portland a chance when he missed two free throws with 45 seconds left and Gonzaga up 63-59. Douglas cut the deficit to two with a driving layup before Gray sealed the win with four free throws.