Villareal fick en drömstart och tog ledningen redan i den tredje minuten, när mittfältaren Dani Parejo bombade in en boll från distans.
Alexander Isak hade chans på en snabb replik när han några minuter senare löpte sig fri och gick på skott, men bollen tog i ribban.
Resultatet såg ut att stå sig, men på tilläggstid lyckades den svenske stjärnan ändå säkra en poäng för bortalaget med ett volleyskott som målvakten inte kunde rå på.
Isak har nu gjort mål i tre raka ligamatcher.
Krysset innebär att Real Sociedad ligger kvar på sjätte plats i La Liga, med 32 poäng på 21 matcher.
Real Madrid tappar i toppstriden efter en överraskande 1–2-förlust hemma mot Levante. Madridlaget hamnade i uppförsbacke direkt, sedan försvarsspelaren Éder Militão åkt på en frilägesutvisning i den nionde minuten.
Trots det lyckades de vitklädda ta ledningen i matchen, när Toni Kroos hittade Marco Asensio med en avgörande passning. Men Levante lyckades ta sig tillbaka. José Luis Morales utjämnade efter halvtimmens spel och i den 78:e minuten prickade Roger Marti in avgörandet.
En tung förlust för Real Madrid som halkar efter stadsrivalen Atlético i tabellen – sju poäng skiljer mellan lagen. Atlético Madrid har dessutom spelat två matcher färre.