The Blues’ loss means they're mathematically unable to catch leaders Luton or second-placed Barnsley in the race for the Championship with one game remaining.
Despite battling from two goals from through Ben Close and Christian Burgess, Kenny Jackett’s men wasted chances to win the game in the second half, while Viv Solomon-Otabor had a goal ruled offside.
Ivan Toney netted a double and Lee Tomlin was on target for the Posh.
The hosts started the game in rampant mood but it was the Peterborough who broke the deadlock against the run of play after 13 minutes.
Marcus Maddison showed plenty of guile to beat Lee Brown and pulled a cross back for Tomlin, who finished with aplomb.
The Blues made a good response, though, with James Vaughan having a shot blocked by Ben White from close range.
And despite Pompey dominating, Peterborough doubled their lead in the 27th minute.
Maddison’s corner was met by Toney at the back post and he powerfully headed beyond home keeper Craig MacGillivray.
The Blues again responded well, though, and pegged Darren Ferguson’s men back with seven minutes of the half remaining.
Brett Pitman’s scuffed shot fell kindly to Ben Close on the edge of the box and his shot deflected off Joe Knight and found the top corner.
Jackett’s men so nearly went into the interval on level terms, with Ronan Curtis being denied by the legs of Posh stopper Aaron Chapman with seconds of the half remaining.
Pompey had their tails up in the second half and went agonisingly close to equalising in the 55th minute but both Close and Jamal Lowe had close-range shots charged down.
However, the Blues’ leveller arrived four minutes later.
Matt Clarke headed Brown’s free-kick down for Hawkins and he teed-up Burgess, who crashed a left-foot shot home.
And shortly after the restart, the home side got themselves into a two-v-one situation, but Solomon-Otabor was unable to find Pitman.
The home side continued to search for a winner, with Solomon-Otabor flashing a right-footed shot just wide of the near post from outside the box.
Pompey were then punished by the Posh after having the ball in the back of the net.
On 74 minutes Solomon-Otabor finished into an empty net after receiving a pass from Pitman but was flagged offside.
And the visitors swiftly went up the other end to regain the lead, with Toney firing an effort into the bottom corner a minute later.
Jackett’s men searched for a way back but Peterborough piled bodies behind the ball and could not be breached.
The full-time whistle led to several Pompey players slumping to the floor in disappointment.
The loss means the Blues are four points behind Luton and Barnsley with a game remaining. Both the Hatters and the Tykes’s promotion has been confirmed.
However, Jackett’s side remain third in the table following Sunderland’s defeat at Fleetwood.