Tyler Haws added 15 points and Eric Mika had 11 as BYU (12-7, 4-2 West Coast Conference) had five players score in double figures. Collinsworth was 7 of 10 from the field and Halford hit 11 of 12 free throws.
BYU trailed 46-43 with more than 15 minutes remaining but used an 8-1 spurt to seize the lead, which it kept for the rest of the game.
It was just BYU's second road victory of the season and first in conference play. The Cougars now have won four in a row after a stretch of four consecutive losses, all on the road.
Cole Dickerson led San Francisco (11-8, 4-3) with 26 points, going 10 of 16 from the field while grabbing 14 rebounds.