The visitors, who made a pre-Christmas trip to the Club World Cup, looked tired and faced a rejuvenated Cazorla, who has suffered a long injury lay-off.
His curler earned an early lead before Karim Benzema’s header made it 1-1.
Santi Solari’s Real remain fourth, seven points behind Barcelona, four behind second-placed Atletico Madrid and two behind third-placed Sevilla.
Real’s night was not improved by Gareth Bale being substituted at half-time with what appeared to be a calf injury.
And they were made to pay by a Villarreal team, who merited at least a point for their superior attacking endeavour and had a midfielder who showed why he was so revered while at former club Arsenal.
Cazorla shows class is permanent
The 34-year-old returned to his former club Villarreal last summer after six years with the Gunners, but he had spent the last two on the sidelines leading to doubts about his ability to walk because of bacteria “eating” eight centimetres of his ankle tendon.
His opener showed the kind of grace which lit up north London for four years, when he latched onto the impressive Samuel Chukwueze’s pass and curled a right-footed shot past the out-stretched Thibaut Courtois.
A rare header from the diminutive Spaniard, which left the home crowd in raptures following Pablo Fornals’ cross, also proved Cazorla had lost none of his nous on when to arrive in the penalty area.
Real struggle to lift themselves after reduced break
Real had six days’ less rest than Villarreal coming into the game thanks to their Club World Cup win in Abu Dhabi, which came on 22 December.
And after a frustrating season where they replaced former manager Julen Lopetegui with Solari in October, they appeared to lack sharpness as they were tested from the start by Nigerian 19-year-old Chukwueze, who has been linked with Arsenal.
The visitors’ two headed goals seemed to catch out Villarreal goalkeeper Sergio Asenjo on both occasions, but he redeemed himself when saving from Lucas Vazquez in the second half when the Real forward was clean through on goal.
Bale made little impact before he was replaced by Isco, but it was Luis Garcia’s home team who posed the greater threat in the second period and their equaliser was fully deserved as they boosted their hopes of staying in the top flight by moving above Athletic Bilbao on goal difference.