Charles Leclerc fended off a late charge from Max Verstappen to finish second at the Mexican Grand Prix after a late virtual safety car ended the race.