O astro francês Kylian Mbappé (32') abriu o placar de pênalti, mas Diego García (34') e Dani Raba (41') viraram para o Leganés antes do intervalo.
No início do segundo tempo, Jude Bellingham (47') empatou para o Real e Mbappé (76') fez o terceiro de falta.
"Um jogo difícil. Depois da data Fifa, é sempre difícil porque você tem um ritmo no seu clube, sai com a seleção e é uma história diferente. Mas sabemos o que sempre temos que fazer: vencer", disse o artilheiro francês à Movistar+.
Com a vitória, o time merengue soma os mesmos 63 pontos do Barça, que mantém a liderança graças ao saldo de gols.
No domingo, o time catalão recebe o Girona (13º) em Montjuic e pode retomar a vantagem na ponta da tabela.