Eli Heidenreich scored on a 60-yard run, Blake Horvath threw for one touchdown and ran for another, and Navy defeated South Florida 28-7 on Saturday.