It was a third straight league win for Billy Davies' side, who showed plenty of character to battle back and take command and they could well have finished with a bigger margin of victory.
Clear cut chances were few and far between in a wind affected opening half which Posh probably finished the happier after losing goalkeeper Joe Lewis, the England Under 21 international suffering concussion in a 27th minute collision with Nathan Tyson.
There had been one piece of early luck for Lewis when he crashed into central defender Gaby Zakuani as the wind held the ball up, although Forest's David McGoldrick also went tumbling and could not take advantage.
With the gale at their backs, Posh saw Craig Mackail-Smith and Aaron McLean fire wide before Lee Frecklington, a 30th minute replacement for the injured Paul Coutts, sent a 25-yard free-kick against a goal stanchion.
Forest goalkeeper Lee Camp saved impressively from Toumani Diagouraga before Posh went one better and broke the deadlock five minutes after the break, with McLean climbing to force a powerful header into the top corner following a Tom Williams corner.
The home lead lasted barely a minute, Radoslaw Majewski curling a free-kick from almost on the goal-line over Lewis's rookie replacement James McKeown and into the net off the far post.
Forest retained the initiative and edged ahead on 56 minutes with Chris Cohen's centre bundled forward by McGoldrick for Paul Anderson to stab into the net.
Craig Morgan then cleared a Luke Chambers header off the Posh line and substitute Gareth McCleary rattled the crossbar as Forest continued to dominate.