Aden Flint shot the home side ahead from close range after nine minutes after Posh had failed to deal with a left-wing corner, the big centre-back capitalising with his fifth goal of the campaign when Joe Bryan’s header was blocked.
The impressive Bryan also set up the second goal after 48 minutes, hitting a post with a fierce shot and then latching onto the rebound to head the ball across goal for Kieran Agard to nod home.
City dominated possession in the first half, with Luke Freeman volleying wide early on and having a precise chip from 20 yards palmed over by retreating goalkeeper Ben Alnwick.
Posh were content to defend in numbers and counter-attack, a policy that almost paid off after 43 minutes when David Norris volleyed narrowly wide from just outside the box.
It was a similar story in the second half with City keeper Frank Fielding not required to make a testing save.