The hosts looked set to take all three points when Bruno Soriano gave them the lead from the penalty spot on 70 minutes, but the game changed 10 minutes later when Uche Ikechuwku was sent off for a second booking.
Betis then took advantage of having an extra man, Ruben Castro heading in the equaliser shortly after.
The point does little to help Gabriel Calderon's side's plight - the Andalusians are 11 points from safety and still face a gargantuan task if they are to avoid the drop - and is a blow to Villarreal, now six points behind fourth-placed Athletic.
Betis went into the game with renewed confidence after beating Rubin Kazan in Russia in midweek to qualify for the last 16 of the Europe League, but opted for a cautious approach early on.
Villarreal instead sought an early opening, youngster Moi Gomez trying his luck from range with just a few minutes gone and forcing Antonio Adan to make a fine save. But despite the frantic start, the first half saw few openings.
The second period witnessed far more action. Substitute Uche squandered a great opportunity to give the hosts the lead when he was played in by debutant Oliver Torres around the penalty spot, but could not keep his shot down.
With little over 20 minutes remaining, Villarreal earned a breakthrough. Uche played a one-two with a team-mate and got down the left hand side of the box, but was sent to the floor by a slide tackle by Javier Chica - although replays showed the defender had got to the ball first.
Soriano cooly sent Adan the wrong way from the spot, sticking the ball into the opposite corner.
Betis's hopes of getting back into the game were boosted with 10 minutes to go when Uche was shown a second yellow card for an aggressive slide tackle on Nono. Calderon's side saw an opportunity and decided to make the most of it, forcing a couple of corners before grabbing an equaliser, Castro heading in a cross from Didac Vila at the far post.
And they could have even grabbed a winner. First Jordi Figueras' deflected just wide of Asenjo's near post, and then Braian Rodriguez headed just wide from the resulting corner.
But then Villarreal launched a counter, Oliver Torres picking out Giovani, and the Mexican was denied a last-minute winner by the fingertips of Adan.
Betis continued their search for a winner into stoppage time, but had to settle for picking up their first point five league games.