Argentina forward Angel Correa scored his fourth league goal at the hour mark to put the hosts in front. But Atletico were unable to hold the lead, allowing Villarreal to draw level with 10 minutes left through a clean header by Carlos Bacca.
Antoine Griezmann had the best early chance for Atletico when he hit the post, and Saul Niguez was unable to score from the rebound, which was blocked by defender Victor Ruiz at the goal line.
And just before half-time, a powerful header by Diego Godin forced a brilliant save from Mariano Barbosa.
Unable to score, Griezmann excelled as a playmaker in the second half, and lobbed a one-touch pass towards Correa, who deftly controlled the ball on the run and swiped a strike between the keeper’s left shoulder and the nearest post for the lead.
It could have been two for Atletico had Kevin Gameiro done the same shortly after, but he shot straight at Barbosa and the miss proved costly. Bacca tied it when he out-jumped Godin on a cross from a corner and beat a retreating Jan Oblak.
Atletico haven’t lost in 14 straight games and face another pressure match on Tuesday against Qarabag in the Champions League.