Johnny Dee added 18 points as the Toreros (10-11, 3-6 West Coast) ended a three-game losing streak.
A layup by Vasa Pusica with two minutes left gave San Diego a 69-64 lead and from there the Toreros made 8 of 11 free throws to hold on.
Kyle Collinsworth's jumper gave the Cougars (15-7, 5-4) a 63-61 lead with 5:45 to play but BYU's next basket was a Collinsworth layup at 35 seconds, after five misses, that cut USD's lead to 73-70. Twice BYU got within one but Collinsworth missed a shot with three seconds left that could have tied the game.
Tyler Haws had 20 points for BYU, which trailed by seven midway through the first half and led by nine midway through the second.