Bolton climbed to fourth in the table as Newcastle slipped to their first loss under manager Graeme Souness.
Diouf (l) scored his first goal in 18 months
After an insipid first half, El-Hadji Diouf gave Bolton a 52nd-minute lead, bravely heading home after Newcastle failed to clear a Jay-Jay Okocha throw.
Three minutes later Newcastle drew level with a swerving strike from Darren Ambrose that flew into the net.
But following a Bolton free-kick, Kevin Davies pounced on Stephen Carr's misdirected header to seal the victory.
Newcastle played with three strikers - Alan Shearer, Patrick Kluivert and Craig Bellamy - but the formation never quite worked, giving the visitors a distinctly unbalanced look.
The visitors' system allowed Bolton to dominate midfield, so much so that their goalkeeper Jussi Jaaskelainen was a virtual spectator, apart from picking the ball out of the net after Ambrose's goal.
Sam Allardyce's Bolton were altogether more cohesive, threatening Newcastle in turns with inventive approach play as well Okocha's long throws and some well-executed set-pieces.
Bolton's opening goal arrived from one of those long throws, although the scorer was more unlikely - Diouf had last scored 18 months ago, playing for Liverpool, ironically, against Allardyce's team.
Radhi Jaidi managed to head the ball across the area after Newcastle failed to clear one of Okocha's throws and Diouf stooped to bravely nod home.
Diouf, who just before he scored had appeared to be close to being replaced by Henrik Pedersen, was booked for pulling his shirt over his head as the Senegalese international indulged in wild celebrations.
Completely against the run of play, Newcastle drew level almost immediately as
Ambrose skipped past challenges from Gary Speed and Kevin Nolan before sending a swerving shot past Jaaskelainen.
But Bolton deservedly regained the lead as Davies bravely prodded the ball home, although Given might have reacted more quickly after Carr was unable to clear.
Davies had proved a continual threat in that disappointing first half as Bolton probed for weaknesses in the Newcastle defence.
The Bolton striker got his head to an early throw from Okocha and then lashed a shot over the bar after the Nigerian midfielder had propelled the ball into the area again.
As Bolton's attacks intensified, errors began to creep into Newcastle's defensive play.
Lee Bowyer almost gave the ball away to Stylianos Giannakopoulos, who was thwarted by Andy O'Brien's alertness.
A poor clearance from Given then gave Bolton a golden opportunity to score.
Diouf pounced on Given's clearance and steered the ball to Davies, whose deliberate shot went the wrong side of the post.
During the first half Newcastle's most productive line of attack was down their right wing, with Carr and Bowyer alternating in getting into the Bolton box.
But Giannakopoulos did well to get back and block a Carr cross as the Newcastle defender delayed his pass.
Bolton were never content to sit on their lead and both Davies and Pedersen had chances late on, although Laurent Robert almost snatched a late equaliser with a low shot.
Bolton: Jaaskelainen, Hunt, N'Gotty, Jaidi (Hierro 55),
Gardner, Speed, Nolan, Okocha, Giannakopoulos (Pedersen 62),
Davies, Diouf (Barness 84).
Subs Not Used: Poole, Ferdinand.
Goals: Diouf 52, Davies 70.
Newcastle: Given, Carr (Bernard 77), Elliott, O'Brien, Hughes,
Ambrose (Ameobi 72), Bowyer, Butt, Bellamy,
Kluivert (Robert 66), Shearer.
Subs Not Used: Harper, Bramble.
Goals: Ambrose 55.
Ref: G Poll (Hertfordshire).