Second-half goals from Hulk and Sergei Semak fired Zenit St Petersburg to a 2-0 first-leg lead against Liverpool in their Europa League last-32 clash in Russia.
Zenit started brilliantly, forcing two good saves from Pepe Reina while Hulk hit the post.
But Liverpool came back into the match as Luis Suarez missed four good chances – including two that he should have taken.
They were made to pay for their talisman’s profligacy when, midway through the second half and against the run of play, Brazil forward Hulk unleashed a long-range thunderbolt that flew past Reina into the top left.
Liverpool had barely regrouped when Zenit added a second, substitute Semak netting an easy finish after Aleksandr Anyukov’s low cross somehow found him at the far post.
Reds boss Brendan Rodgers needed to change things but the introduction of a defensive midfielder Lucas for forward Raheem Sterling was negative, and Zenit were relatively comfortable in holding on to their lead.
Liverpool must now win the Anfield leg by three clear goals, or at least repeat the scoreline and force penalties, otherwise they have no chance of silverware this season.
Rodgers said afterwards it was "a perfect away performance, apart from 10 minutes", and if that is how he views the standards set by Liverpool supporters he could well find himself in trouble.
Much like their 2-0 weekend defeat at West Brom last weekend, Liverpool did play well initially but they were let down by poor finishing and, ultimately, sloppy defending.
Played in sub-zero temperatures, the first half was an entertaining affair, with Zenit dictating the tempo but Suarez spurned a hat-trick of great chances on the counter attack.
The opening minutes saw the visitors struggle to get to grips with a ragged pitch, as Reina made a stunning save from Aleksandr Kerzhakov before keeping out a Hulk thunderbolt.
Those chances sandwiched Suarez’s first miss, when he put just wide from an acute angle after racing on to a Glen Johnson long ball.
Zenit were piling men forward, with Hulk hitting the near post after his drive beat Reina, but they were vulnerable at the back, allowing Liverpool to hit them on the break.
But Suarez was missing everything, and when he latched on to an error from Nicolas Lombaerts he elected to round the keeper instead of finishing early, a poor decision given the state of the pitch: the ball bobbled away and out of play.
The worst miss was still to come. Five minutes before the break a fantastic swerving cross from Joe Allen almost swung in, landing instead for Sterling at the far post.
The England winger picked out Suarez who – from six yards out – elected to finish with a spectacular backheel, which he put wide. It was a dreadful decision as a simple toe-poke would have sufficed.
Zenit were forced deeper in the second half as Liverpool made more of the running.
Johnson was denied a wonder-goal when Vyacheslav Malafeev rushed out to save after the England full-back ran the length of the pitch, nutmegging Lombaerts before trying to slip it through the keeper’s legs.
Zenit lost midfielder Danny to an injury and could not get into their stride as the Reds closed them down all over the park.
But Suarez had left his shooting boots at home, sending another good opportunity wide after a brilliant sweeping counter-attack that he had started with a cute backheel to Steven Gerrard.
And Liverpool were made to pay when, on 69 minutes, Hulk exploited some sloppy passing to latch on to a loose ball 25 yards out. He took a touch to steady himself before unleashing a brilliant drive past the flying block of Martin Skrtel and into the top left, Reina left with no chance despite his dive.
The visitors barely had time to regroup when it was 2-0, and this one was entirely their fault. Jose Enrique let Anyukov cross far too easily, with Skrtel more concerned by easing Kerzhakov out of the way than defending the ball. Johnson was out of position, meaning Semak – at 36 hardly the quickest man on the pitch – could ghost in unmarked to finish from close range.
Liverpool went in search of an away goal but the closest they came was a Suarez free-kick that Malafeev made a meal of saving; indeed it was Zenit who could have extended their lead, substitute Viktor Fayzulin’s long-range drive taking a deflection off Skrtel but landing just wide.
MAN OF THE MATCH
Hulk - Zenit St Petersburg: The Brazilian forward scored a fantastic long-range effort and was denied by some good Pepe Reina saves.
ZENIT: Malafeev 6, Anyukov 7, Lombaerts 6, Luis Neto 6, Hubocan 7, Shirokov 7, Denisov 6, Witsel 7, Danny 7, Kerzhakov 6, Hulk 8. Subs: Fayzulin 7, Semak 7.
LIVERPOOL: Reina 7, Johnson 5, Skrtel 6, Carragher 6, Enrique 5, Allen 5, Henderson 6, Gerrard 6, Downing 7, Suarez 5, Sterling 6. Subs: Lucas N/A.