El Hadji Diouf's goal earned Bolton victory at Manchester City and lifted them up to sixth in the Premiership and into the Uefa Cup places. Diouf struck just before half-time, tapping in from two yards after Stelios had capitalised on hesitant defending.
Robbie Fowler should have given City the lead, but Jussi Jaaskelainen deflected his close-range shot over.
Kevin Davies and Bruno N'Gotty almost extended the lead while Kiki Musampa headed wide for City at the death.
Bolton's win took them closer to European competition next season, but their poor recent record at Manchester City did not look like improving after a shaky start.
City carried the major threat in the opening stages with Claudio Reyna, back in the side after three months out through injury, in lively form down the right.
The American created the first chance, his curling cross headed over by Antoine Sibierski, before Bolton replied with Kevin Nolan's daisy-cutter being saved well by David James.
But City were enjoying the majority of the possession and Danny Mills' cross just evaded Sibierski before the Frenchman volleyed Willo Flood's centre over the bar.
Halfway through the half, a calamity of errors should have given Fowler the opportunity to open the scoring.
A mis-hit back-pass from Vincent Candela was fumbled by Jaaskelainen, but Fowler could only scoop the ball over from four yards.
And Bolton made Fowler pay with almost the last kick of the half, City failing to deal with a free-kick pumped into their box and Stelios crossing for Diouf to tap in at the far post.
There was a touch of desperation to City's attacking after the interval, and although they had plenty of the ball Bolton's defence proved a tough nut to crack.
The visitors were enjoying themselves on the break, no one more than Diouf, who sliced wide after tormenting Richard Dunne and Sylvain Distin with his pace.
Dunne was again caught out by Fernando Hierro's long pass, but James was equal to Davies' volley and palmed the ball around the post.
As Bolton continued to plough balls into the City box both Davies and N'Gotty saw headers go agonisingly wide as the visitors tried to wrap up the points.
Musampa thought he had stolen a point for City with two minutes left, but his looping header ended up the wrong side of Jaaskelainen's post.
Man City: James, Mills, Distin, Dunne, Sommeil, Flood (McManaman 45), Bosvelt (Bradley Wright-Phillips 68), Reyna, Musampa, Fowler, Sibierski (Croft 83).
Subs Not Used: Weaver, Bischoff.
Booked: Dunne.
Bolton: Jaaskelainen, Candela (Jaidi 89), N'Gotty, Ben Haim, Gardner, Nolan, Okocha (Speed 45), Hierro (Campo 86), Giannakopoulos, Davies, Diouf.
Subs Not Used: Poole, Pedersen.
Booked: Candela, Ben Haim.
Goals: Diouf 45.
Att: 43,050.
Ref: A Wiley (Staffordshire).