Second-half goals from Hulk and Sergei Semak punished the Reds after Luis Suarez had missed a host of chances at the other end.
From the off the game was littered with chances, with Aleksandr Kerzhakov forcing Pepe Reina into a smart save and Suarez seeing a chance go wide inside the first two minutes.
Reina pulled out another fine stop to deny the marauding Hulk as Zenit dominated the early stages, but Liverpool remained a threat and Suarez should have put them ahead following an error from Nicolas Lombaerts.
The Belgian centre-back foolishly gave the ball away to Suarez but, while the striker comfortably rounded Vyacheslav Malafeev, he delayed long enough to allow Lombaerts to recover and clear.
Shortly afterwards, Hulk drilled in a shot that beat Reina only to bounce back off the woodwork to safety.
There was still time for a third chance for Suarez before the break, the striker flicking Raheem Sterling's intelligent centre wide as the first-half somehow ended scoreless.
Brendan Rodgers' side began the second half well with Glen Johnson forcing Malakeev into action and Suarez measuring a good chance just wide of the post.
And with the visitors starting to look comfortable, those spurned opportunities proved costly when Hulk blasted a brilliant long-range effort into the top-left corner.
Minutes later things got worse for Liverpool when a cross from the right ran through to substitute Semak and the 36-year-old midfielder tucked the ball away at the far post.
Liverpool pushed for a potentially vital away goal but it was not forthcoming and it will require a big effort to turn the tie around at Anfield next week.