La Liga Wrap: Atletico finally beaten at home
Luciano Vietto netted the all-important winner at the Vicente Calderon on Sunday, with his 85th-minute strike ensuring the champions missed the chance to draw level with second-placed Barcelona on 35 points.
Vietto, who was given his senior debut for Argentine side Racing Club by current Atletico coach Diego Simeone, came back to haunt him with a delightful solo goal five minutes from time, ending the hosts' 27-game unbeaten home run in Spain's top flight.
Atletico earlier saw a 58th-minute header from Mario Mandzukic controversially ruled out for a foul and in-form Villarreal – who have now won four Liga matches in a row – capitalised to climb to sixth in the table.
The shock defeat leaves Simeone's men seven points adrift of arch-rivals and leaders Real Madrid.
Moyes' Real Sociedad were held to a 1-1 draw at Anoeta by bitter rivals Athletic Bilbao in the season's first Basque derby.
Carlos Vela put Real ahead with just three minutes on the clock, heading Chori Castro's cross beyond Gorka Iraizoz, with the Mexican striker still the only player to score for the club since Moyes' appointment.
Oscar de Marcos netted the equaliser in the 61st minute, as the versatile midfielder latched on to Markel Susaeta's delivery and volleyed home from close range.
Athletic centre-back Aymeric Laporte picked up a second yellow card with 10 minutes to go after catching Xabi Prieto with a flailing elbow, but Real could not make the most of their numerical advantage and were forced to settle for a point, taking them up to 14th.
Sevilla missed out on the opportunity to go level on 32 points with third-placed Atletico as they were surprisingly held to a 0-0 draw at home by Eibar, with Stephane M'Bia controversially having a second-half goal disallowed.
And in the day's early kick-off, Christian Stuani's late goal earned Espanyol all three points in a 2-1 win over Granada, who had Juan Carlos sent off with eight minutes to go.