Kevin Nolan scored the only goal as Bolton saw off Zenit St Petersburg to boost their chances of reaching the knockout stage of the Uefa Cup.
Nolan reacted first after Stelios Giannakopoulous' close-range shot had been smothered by Kamil Contofalsky.
Chances for both sides were limited on a rain-sodden pitch which did little to encourage free-flowing football.
Jussi Jaaskelainen had to save from Igor Denisov and Andrei Arshavin late on as Zenit pushed for an equaliser.
Zenit deserve credit for a positive approach in awful conditions although both sides struggled to make the game into an entertaining spectacle.
Keeper Jaaskelainen had to be alert early on as the Russian team made several early breaks.
But Bolton should have scored first as Kevin Davies twice squandered chances to put them ahead on the quarter-hour mark.
First he headed wide from Nolan's cross, then two minutes later blazed over as he charged into the area with only Contofalsky to beat.
But the breakthrough came in the 24th minute, as Nolan reacted first to the loose ball after Stelios saw a shot blocked during a goalmouth melee, rifling home insitinctively from close range.
Zenit were still lively, however, and on a sodden pitch with the rain lashing down, the Bolton defence looked decidedly nervous.
The Russian side were close to equalising on 51 minutes as Aleksandr Kerzhakov pulled clear of his marker at the far post and hit a shot which beat Jaaskelainen but bounced wide of the target.
Bolton were relieved when a dangerous break from Arshavin broke down as the midfielder mis-controlled in the area.
The ball was becoming increasingly difficult to control as the rain continued to pour down, but Zenit seemed to be handling the conditions better.
Davies had Bolton's first chance of the second half on 66 minutes, but his header whistled past the post with Contofalsky beaten.
Neither side was able to put together much in the way of flowing football with the pitch resembling a quagmire in the closing stages.
But Jaaskelainen still had to be alert, producing a diving save to keep out Igor Denisov with 13 minutes remaining.
And in injury time, Arshavin had a golden chance, but Jaaskelainen saved his point-blank effort with his shoulder.
Bolton boss Sam Allardyce:
"Jussi is playing at the top end of his game. He is one of the top two or three goalkeepers in the Premiership and has proved that again.
"He made couple of saves in the second half to keep a clean sheet, which meant three points on the board for us.
"A good result in Portugal (against Vitoria Guimaraes) should see us through. That would be very important."
Bolton: Jaaskelainen, O'Brien, N'Gotty, Ben Haim, Gardner, Faye, Giannakopoulos, Nakata (Okocha 66), Speed, Nolan (Diouf 85), Davies (Borgetti 74).
Subs Not Used: Walker, Jaidi, Vaz Te, Fojut.
Goals: Nolan 24.
Zenit St Petersburg: Contofalsky, Aniukov, Hagen, Skrtel (Gorshkov 25), Flachbart, Vjestica, Sumulikoski, Vlasov (Kozlov 90), Denisov, Alexander Kerzhakov, Arshavin.
Subs Not Used: Malafeev, Cadikovski, Poskus, Korzhanov, Stroev.
Booked: Hagen, Flachbart.
Ref: Matteo Trefoloni (Italy)