Steven Williams threw for 188 yards and ran for two touchdowns, including the game-winner with 37 seconds left, to lead Old Dominion in a 24-21 win over Rice on Saturday.