First-half goals from Stephen Brooker and Paul Heffernan gave Bristol City their first home win since early November.
But the main talking point of the afternoon was provided by an incident in the tunnel at half-time, which left City defender Tony Butler with several displaced teeth.
Butler was taken to hospital and Peterborough striker Clive Platt, who he had been marking, was also substituted at half-time. The fourth official is thought to have witnessed the incident and will be making a report.
A blustery wind and driving rain made it hard work for both teams in the first half, but City struck out of the blue with two goals in four minutes.
The first came on the half-hour when Luke Wilkshire's cross from the left was met with a firm header by Brooker that gave Posh keeper Mark Tyler no chance.
Before Peterborough could recover from that blow Brooker played a low ball into Heffernan, who turned his marker ten yards out and fired home the second.
Richard Logan had wasted a good chance for the visitors after 26 minutes when Steve Phillips comfortably saved his tame shot.
And ten minutes into the second half substitute Callum Willock also had a good opportunity to score for the Posh, but headed straight at Phillips.
At the other end Tyler did well to grab a well struck free-kick from Mickey Bell on the hour, while nine minutes later the goalkeeper again came to his side's rescue with a diving stop following Scott Murray's exciting break.
In the closing stages City seemed to settle for the score-line and Peterborough lacked the firepower to get themselves back into the game.