Le Barça, privé de Xavi (suspendu), a souffert à Villarreal et est resté dans le match grâce à son gardien Victor Valdés, deux fois impérial devant Rossi (6e, 12e).
Le leader et double champion en titre s'est réveillé en seconde période.
Messi, remplaçant, est entré à la place de Keita à la 53e et a donné plus de percussion au Barça. Mais c'est un défenseur, Gerard Piqué, qui a donné la victoire aux Catalans (67e). Le petit ami de Shakira a fusillé Diego Lopez après un contrôle de la poitrine (et du bras?).
Valdés a encore sauvé les siens en fin de match avec un arrêt sensationnel devant Cazorla (86e).
"Les mathématiques disent que non, non (ce n'est pas fini) mais avec pragmatisme, avec objectivité, si (samedi) la différence augmente de cinq à huit points, on pourra dire que ce sera pratiquement impossible", avait déclaré Mourinho après la défaite du Real et avant la victoire du Barça.
Le Real, dont la fabuleuse série à domicile de 14 victoires en 14 matches a pris brutalement fin face au Sporting, n'a pas été capable de se passer de quatre joueurs majeurs: Xabi Alonso (suspendu), Marcelo, Cristiano Ronaldo et Karim Benzema (blessés).
La vision de jeu du premier, les montées et les passes du deuxième et l'efficacité des deux derniers ont cruellement manqué à l'équipe de José Mourinho face à une formation solide, qui a réalisé le coup parfait.
Cette défaite vient au pire moment pour le Real, qui reçoit mardi Tottenham en quart de finale aller de la Ligue des champions. Et Mourinho a annoncé vendredi que Benzema, Ronaldo et Marcelo ne devraient pas être remis pour jouer face aux Anglais...
Largement privé du ballon, le Sporting a tenu sans rompre et a porté une estocade fatale, par De las Cuevas, dont la frappe précise à la 79e minute a trompé Casillas avec l'aide du poteau.
Mourinho, qui a perdu à domicile en championnat pour la première fois depuis 2002 (défaite 3-2 avec Porto), avait pourtant tout tenté en faisant entrer l'attaquant argentin Gonzalo Higuain, absent 124 jours à cause d'une hernie discale, à la 57e minute, et en laissant Adebayor sur la pelouse.
Higuain obtenait une très belle occasion à la 60e minute mais il frappait sur le gardien Juan Pablo.
Sonné par le but, le Real réagissait et passait tout près de l'égalisation à plusieurs reprises, d'abord sur une frappe contrée de Khedira (85), puis sur un face-à-face perdu par Adebayor (90+1) et enfin sur une ultime tentative de Khedira. Mais un défenseur du Sporting sauvait sur sa ligne (90+4).
Dans la banlieue de Madrid, l'attaquant de Valence Roberto Soldado a fait très mal à son ancienne équipe, Getafe, en inscrivant un quadruplé (4-2), permettant à Valence, qui restait sur deux défaites, de reprendre la 3e place à Villarreal.