The world's most expensive player was handed a start at El Madrigal by Real coach Carlo Ancelotti, despite suffering an injury-interrupted past couple of months.
He missed most of pre-season with former club Tottenham Hotspur and was only fit enough to play half an hour as a substitute for Wales against Serbia in midweek.
However, he lined up on the right-hand side for Real as part of an attacking trio which also included Isco and Cristiano Ronaldo providing support to lone striker Karim Benzema.
It took nearly six minutes for Bale to have his first touch, when he laid the ball off for his former Spurs team-mate Luka Modric, but from that move Villarreal broke forward and almost scored as Diego Lopez denied Jonathan Pereira.
Villarreal were the better team for much of the first half and Pereira forced Lopez into another point-blank save on 14 minutes after he had been left unmarked at the far post from a corner.
On 17 minutes, Real were awarded their first free-kick in a dangerous position and Bale went over to get involved, but his predecessor as the world's most expensive player - Ronaldo - held sway and took the set-piece.
Ronaldo was off target and four minutes later Villarreal were in front when the ball broke for Cani inside the area and he steered his shot past Lopez.
Bale swapped wings with Ronaldo midway through the first half, but continued to struggle to get involved in the game as Lopez made two fine stops to deny Javier Aquino.
Real eventually offered a threat as Sergio Ramos' header was pushed out by Villarreal keeper Sergio Asenjo and then Ronaldo headed wide when he was picked out unmarked in the penalty area.
But six minutes before half-time, Bale made a decisive contribution as he raced into the six-yard box ahead of his marker to slide home Dani Carvajal's pull-back from the right by-line.
The second half followed a similar pattern to the first, with Bale a peripheral figure and Villarreal having the best chances as full-back Jaume Costa side-footed wide from 12 yards out when he should have scored.
On 61 minutes, Bale's debut was over as he was replaced by Angel Di Maria after a run-out which will have done much to boost the winger's match fitness.
Within three minutes of Bale being substituted, Real took the lead in slightly fortunate fashion through Ronaldo.
The Portugal international's run created a chance for Karim Benzema, whose shot was parried out by Asenjo to Ronaldo. His attempt struck a Villarreal defender before bouncing back off Ronaldo and over the Villarreal keeper.
Villarreal were always a threat and equalised 20 minutes from time through former Spurs attacker Giovani Dos Santos, whose shot on the rebound found its way past Lopez after the Real keeper had been forced into another save.
Former Villarreal keeper Lopez was at it again with nine minutes to go as he flung himself to his right to turn away substitute Tomas Pina's 30-yard drive.
Ronaldo had a late chance saved by Asenjo as Bale watched on after a memorable debut in which he scored, but still looked some way off full fitness.