The Welshman equalised following Cani's opener and, though the Blancos' No.7 gave the visitors the side, Giovani dos Santos saved the day for the hostsGareth Bale's debut was ruined by an admirable Villarreal performance as the newly promoted hosts held Real Madrid to a 2-2 draw.
The Welshman made his first competitive start for the club since his world-record move from Tottenham and he began repaying his huge fee by cancelling out Cani's opener at El Madrigal just before half-time.
Cristiano Ronaldo refused to be overshadowed as he put Madrid ahead with a breakaway goal after 64 minutes, but their lead was short-lived as Giovani dos Santos equalised just nine minutes later.
Carlo Ancelotti opted to start Bale on the right, with Isco in the centre and Ronaldo on the left behind lone striker Karim Benzema as midfielder Asier Illarramendi also made his first start for the Blancos.
Villarreal made just one change to the side that beat Osasuna 3-0 in their last La Liga fixture, with Dos Santos replacing Jeremy Perbet.
Despite the wealth of talent in Real's ranks, it was the home side who made the more positive opening and twice in the opening 15 minutes Jonathan Pereira was denied at the near post by Diego Lopez, but they got the breakthrough deservedly in the 21st minute.
Real failed to clear their lines with Pereira and Bruno Soriano both looking to pounce, but the ball spilled kindly to Cani, who smashed home into the bottom corner.
It could have been even worse just short of the half-hour mark when the influential Pereira played a sublime backheel to Javier Aquino, whose initial shot was saved by Lopez before the goalkeeper stopped the rebound.
Real were reeling but they should have been level on 34 minutes when Sergio Ramos chipped a superb pass over the top for Ronaldo, but he uncharacteristically steered his header wide.
Against the run of play, Real did get the equaliser, when Bale opened his account for his new club. Daniel Carvajal broke down the right before putting in a teasing low cross and the Welshman nipped in ahead of Mario and slid to poke home with his right foot from close range.
Villarreal had shouts for a penalty shortly after the restart when a Dos Santos effort struck Bale on the arm before Bale nearly irked the home fans further when his 25-yard drive went narrowly over the crossbar.
And the home side should have been back in front in the 54th minute. Dos Santos backheeled smartly to Pereira and his centre found Jaume Costa unmarked, but from eight yards he somehow side-footed wide.
Bale soon departed, withdrawn by Ancelotti, but that was the signal for Ronaldo to take over as he punished the hosts in the 64th minute.
He broke from his own half and laid the ball into the path of Benzema, whose initial shot was parried back to Ronaldo to fire a deflected effort that put Real ahead.
However, the lead lasted less than 10 minutes before Lopez parried Cani's shot into the path of Dos Santos, who drilled home the equaliser.
Villarreal pushed forward for a winner in the closing stages and Cani was denied a second when Lopez produced an outstanding save to stop his rasping drive.
At the other end, Ronaldo almost got the winner for Real in the 87th minute, but his fierce 20-yard effort was parried to safety by Sergio Asenjo.