Soldado nearly scored on the half-hour mark, but saw his strike tipped around by Antonio Adan.
However, after a succession of corners, Villarreal's pressure paid off when the former Tottenham Hotspur player turned home Juame Costa's cross.
Soldado went close with another effort early in the second period, which Adan managed to keep out before Ruben Castro's strike was tipped away by Areola at the other end.
Just after the hour mark, Adan dropped a cross, which almost presented Cedric Bakambu with an easy chance only for the Real keeper to recover the ball from the substitute's path.
Adan then rushed out of his goal, but was rounded by Bakambu. The Congolese forward's goalbound shot was cleared off the line before Samuel struck the crossbar.
However, Betis rescued a point in the dying stages when Cristiano Piccini's long-range shot was parried by Areola into the path of Torres, who appeared to be in an offside position, but headed the ball into the path of Castro to score from close range.
Villarreal were forced to see out the final seconds with 10 men when captain Bruno Soriano was sent off, but both sides were forced to settle for a point.