Reading lost ground to Southampton at the top of the Championship as their 10-match unbeaten run came to an end at Peterborough.
The second-placed Royals looked set to continue their good form when Noel Hunt put them ahead after 20 minutes.
But George Boyd equalised within five minutes, and Tyrone Barnett scored for a third successive game to give Posh a half-time advantage.
Paul Taylor scored on the break late on to secure victory for the hosts.
Reading had the best of the early exchanges, Jobi McAnuff and Mikele Leigertwood both firing narrowly wide, before they capped off their early pressure with a goal.
Jimmy Kebe's deft turn set him loose on the Peterborough goal, Paul Jones was only able to parry his shot into Hunt's path, and the striker finished with ease.
Jones was called into action again shortly afterwards, tipping away Jem Karacan's drive from outside the area.
However, Peterborough were to turn the game on its head from two corners in quick succession.
Shaun Brisley nodded Grant McCann's centre across the area for Boyd to lash home, before Barnett powered another McCann ball past Adam Federici.
Federici then saved well from Lee Frecklington and Lee Tomlin as the home side finished the half brightly.
Reading pressed for an equaliser in the second half, Ian Harte's free-kick being diverted wide before Leigertwood missed from inside the box.
But it was Peterborough who struck the killer blow, Paul Taylor breaking past Harte to collect a long ball, before slotting in under Federici.
Peterborough boss Darren Ferguson: "I didn't know until after the game that this was my 100th win but it was a terrific way to reach a milestone like that.
"We convincingly beat the most consistent team in the country and again proved that we are capable of beating any side at this level - and now the challenge for us is to develop the sort of consistency that Reading have shown."
Reading boss Brian McDermott: "I can't fault the lads in the slightest. We have been on a terrific run to get ourselves into a great position and nothing has changed.
"We were 20 points off the pace at one point so the players deserve great credit for what they have done.
"We didn't have the best of nights but we'll certainly bounce back and I don't want to take anything away from Peterborough who played very well."