Jared Borgetti and Kevin Nolan were on target as Bolton ended a run of four Premiership games without a win.
Nolan celebrates Bolton's second with Vaz Te
Borgetti struck from close range in the 37th minute and Nolan added a second four minutes later following a Stelios Giannakopoulos free-kick.
Manchester City were a shadow of the side that played so well in the derby win against Manchester United.
City hardly created a serious chance and Nolan could have added a third as Bolton eased to the victory.
Bolton lost Jay-Jay Okocha, El-Hadji Diouf, Abdoulaye Faye and Radhi Jaidi to the African Cup of Nations - but it made little difference to Sam Allardyce's side as they cruised into a two-goal lead at the interval.
The opening exchanges provided little in the way of quality, with the only real incident an accidental clash between Stelios Giannakopoulos and Richard Dunne that forced both players off with head wounds.
But Bolton were in front eight minutes before half-time when Borgetti swooped from close range after Nolan's flick came off Stelios eight yards out.
Nolan then tested David James from long-range before he scored Bolton's second after 41 minutes.
Stelios' free-kick rebounded off Dunne and fell kindly for Nolan, who was perfectly-placed to beat James.
City fared little better after the break in a scrappy affair, although Dunne had a half-chance which he failed to take.
And boss Stuart Pearce made a double change after 67 minutes in a bid to inject fresh life into his side, sending on Robbie Fowler and Antoine Sibierski for Darius Vassell and Albert Riera.
But it was still Bolton who made all the running, and when substitute Matt Jansen made inroads into the City penalty area, Nolan should have done better than shoot well wide from the edge of the area.
Bolton manager Sam Allardyce:
"We were down to our last 12 or 13 professionals here, but they gave me everything and we fully deserved to win.
"We got the right result, full effort, commitment and a lot of belief - all the things that have contributed to any success we have had here.
"Our strength in depth has been excellent this season and that is why we have achieved so much.
"It was good to see Kevin Nolan end a barren spell with a goal and now we hope Jared Borgetti can continue in similar vein after his first Premiership goal."
Manchester City manager Stuart Pearce:
"We have got to stop gifting cheap goals to teams. If you do that it erodes all the good things you do.
"There hasn't been a time this season when my team has thrown the towel in. We can play reasonably well, but then switch off and concede from a quick free-kick.
"It erodes confidence and we need to be more hard-nosed and hard to beat. You really have to earn your goals against Bolton. Other teams have that mentality and we need to be the same."
Bolton: Jaaskelainen, O'Brien, Ben Haim, N'Gotty, Gardner, Nolan, Campo, Fadiga (Vaz Te 22), Davies, Borgetti (Jansen 79), Giannakopoulos, Vaz Te (Hunt 90).
Subs Not Used: Walker, Fojut.
Booked: Davies, Ben Haim.
Goals: Borgetti 37, Nolan 41.
Man City: James, Jihai, Dunne, Distin, Jordan, Sinclair, Barton, Ireland, Riera (Sibierski 67), Cole (Fowler 67), Vassell (Croft 76).
Subs Not Used: Musampa, Onuoha.
Booked: Jihai, Sinclair.
Ref: R Styles (Hampshire).