Bristol City's magnificent 19-game unbeaten run came to an end on manager Danny Wilson's 43rd birthday when second-half goals from defender Roger Johnson and a penalty from midfielder Steve Brown gave Wycombe the three points.
City responded with a penalty of their own from Brian Tinnion, but the home side held out for an important victory.
The first half was a turgid affair with both defences mostly on top although Wycombe keeper Frank Talia did have to be alert to make saves from Liam Rosenior and Scotland B International Scott Murray.
High-flying City fell behind four minutes into the second half when midfielder Michael Simpson's corner found Johnson at the far post and he rose to head his second goal of the season past Steve Phillips.
The home side went further ahead on 68 minutes.
Young forward Johnny Dixon out-paced City midfielder Danny Coles, who sent him sprawling, and the referee had no hesitation in pointing to the spot despite City's protests.
Brown easily beat Phillips for his fourth goal of the season.
However, City were handed a lifeline with just three minutes left from the spot after home captain Keith Ryan was adjudged to have handled in the area.
City's midfield veteran Tinnion easily beat Talia from the spot.
Both sides had chances in added-on time but Wycombe held firm to record an important victory.