Lando Norris dominated the battle for pole position at the Mexico City Grand Prix on another difficult day for championship leader Oscar Piastri, who will start seventh.