Leicester looked like making it six straight victories when Ben Marshall put them in front at the start of the second half.
But Darren Ferguson's side, unbeaten in their last five home league matches after this result, hit back through Davide Petrucci's superb strike before McCann completed the turnaround two minutes from time.
The best chance of the first half was created by Nigel Pearson's men after 33 minutes when Foxes' leading scorer David Nugent saw his first-time shot brilliantly saved one-handed by Robert Olejnik down to his left.
The visitors eventually took the lead with a well-worked move seven minutes into the second half as Danny Drinkwater's low cross allowed Marshall to sweep a shot into the top corner of the net from 10 yards out.
The home side then piled on the pressure and got their reward after 74 minutes when Petrucci thumped an unstoppable right-foot volley from the edge of the area into the top corner of the net.
McCann earned Posh secured all three crucial points two minutes from the end, drilling a low shot past Kasper Schmeichel.