Villarreal beat Liverpool 1-0 in the first leg of their Europa League semifinal at El Madrigal through an injury time Adrian Lopez goal.
The match appeared to be heading for a stalemate until substitute Lopez poked home two minutes into stoppage time.
It was frustrating for Jurgen Klopp's side, who appeared to have done the hard work until a momentary lapse in concentration cost them.
But the hosts have now won all seven Europa League ties at El Madrigal this season and are unbeaten in the competition since the first matchday.
Daniel Sturridge was on the bench again for Liverpool -- a pattern repeated over four European matches now -- despite scoring four goals in the last five games. Roberto Firmino was given the role of nominal centre-forward.
While the Brazil international covered a lot of the hard yards, pressing from the front as per his manager's instructions, he could offer neither the pace nor precision that Sturridge has.
Klopp had urged his players not to waste that dramatic win over his Dortmund two weeks ago and Joe Allen, on his first European start since Nov. 26, almost got them off to a flier.
Arriving into the penalty area at speed in the fifth minute, he could only direct Adam Lallana's cross straight at Sergio Assenjo when a shot a yard either side of goalkeeper would have produced the breakthrough.
Without the focal point of Divock Origi, who suffered injured ankle ligaments in the Merseyside derby a week ago, Liverpool were aimless in the final third.
Too often crosses were swung in at no one in particular, giving centre-backs Eric Bailly and Victor Ruiz an easy ride.
As a result Villarreal had the better chances, with former Tottenham striker Roberto Soldado off-target with two shots at either end of the half while Simon Mignolet got down well to parry Tomas Pina's low effort.
Villarreal right-back Mario Gaspar also had efforts snuffed out by Kolo Toure, continuing in central defence with Mamadou Sakho now officially suspended by UEFA for a failed drugs test.
The ineffectual Philippe Coutinho, reportedly being watched by Barcelona scouts, was replaced by winger Jordon Ibe at the break after feeling unwell, and within 40 seconds of the restart Cedric Bakambu headed against the post from a Jonathan dos Santos corner.
Firmino, having kept himself onside, responded midway through the half with a shot which Asenjo tipped onto the upright -- but that was as close as the visitors came.
Mignolet came to the rescue three minutes from time when Bakambu seized on Ibe's mistake while charging full-back Alberto Moreno ignored the unmarked winger from a quick counter-attack and instead fired over.
And in added time substitute Lopez slid home after Denis Suarez had outpaced Toure.