Villarreal's Adrian Lopez produced a stinging sucker punch in stoppage time to leave Liverpool reeling and move the Spaniards closer to a maiden European final after their Europa League last four first leg clash finished 1-0 on Thursday.
Liverpool, who got a taste of their own medicine having scored deep in added time to knock Borussia Dortmund out in the quarter-finals, looked comfortable before Denis Suarez broke into the box and unselfishly squared for Lopez to sweep home.
In the other semi-final, holders Sevilla had their fingers briefly loosened from the trophy before grabbing a 2-2 draw at Shakhtar Donetsk that left them well-placed to progress.
Five times European champions Liverpool had not lost in 12 Europa League games this season and were facing a Villarreal side out to banish a last-four curse and reach a European final for the first time at their fourth attempt.
The Merseysiders' manager Juergen Klopp decided to leave the most prolific marksman at his disposal, Daniel Sturridge, on the bench for the entire 90 minutes and in his absence the visitors looked cautious and laboured in attack.
They had their chances, with Joe Allen firing straight at keeper Sergio Asenjo from close range after five minutes while Roberto Firmino hit the post midway through the second half.
Villarreal, however, had chances of their own with Liverpool's Simon Mignolet making fine saves to deny Tomas Pina and Bakambu, who also hit the post with a header.
The winner arrived after Liverpool looked to have absorbed everything the hosts could throw at them and Lopez's late goal has left Klopp's side facing a tricky task next week, where an away goal would leave them needing to win by at least two.
"It is only the first leg," said Klopp.
"It is 1-0 and they have to come to Anfield where we know how strong we are. We had our moments, we defended really good. This race is not over."
Sevilla's bid to become the first side to lift the trophy three years running got off to a great start when they opened the scoring through Vitolo after six minutes.
Shakhtar produced a spirited response, though, with goals from Marlos and Taras Stepanenko to lead at halftime before Kevin Gameiro's 82nd-minute penalty left the Spaniards as favourites to progress with two away goals.
Sevilla and Shakhtar are the only remaining sides who parachuted into the competition after the Champions League group stage and it was not long before their clash sparked into life.
Everything had seemed to be going to plan for Sevilla when Vitolo gave scored after six minutes, beating Andriy Pyatov at his far post with a curling effort.
Shakhtar, however, turned the match around with two goals in 14 first-half minutes.
Marlos drew them level when he galloped onto a long ball from Yaroslav Rakitskiy and placed his finish past David Soria after 23 minutes, before Stepanenko made it 2-1 with a thumping header from close range.
Facundo Ferreyra, however, brought down Vitolo and Gameiro stepped up to blast home his penalty with eight minutes left.