Marcus Lattimore ran for a career-high 246 yards and three touchdowns to help No. 10 South Carolina hang on for a 24-21 victory over Navy on Saturday night.