Dai Cornell produced a fine stop inside the opening minute of the contest as he tipped over a fierce drive from distance from Philip Zinckernagel. The resulting corner was well worked, but equally well defended by Posh.
One nine minutes, Dembele found some space in the left-hand channel, the diminutive attacker cut inside onto his right-foot, but his low shot was gathered by Samba. Dembele created a chance for Grant on 17 minutes but the former Forest man tried to dink the ball over Samba with the outside of his right foot and the keeper made a comfortable save.
Clarke-Harris drilled a free-kick into the wall and then saw a secondary effort blocked just after the half hour mark. Lewis Grabban fired a shot into the side-netting on 37 minutes after the hosts were allowed to take a quick free-kick with a moving ball.
Clarke-Harris saw a free-kick hit the wall before efforts from Taylor and Burrows were also blocked following a crazy end to the first half. Grabban fired wide of the target on 53 minutes after cutting inside onto his right-foot from a tight angle.
Moments later, Posh were a whisker away from breaking the deadlock as a long ball forward picked out Dembele, but his left-foot shot clipped the outside of the post. At the other end, Zinkernegal dragged a left-foot shot wide of the target after a swift counter-attack. Clarke-Harris was cautioned for a foul on 58 minutes by referee Thomas Bramall.
Dan Butler was booked on 64 minutes for a late challenge by the touch-line. Darren Ferguson made a first change on 68 minutes with Harrison Burrows replaced by on-loan West Ham United midfielder Conor Coventry.
On 71 minutes, the home side got their noses in front, Posh appealed in vain for a foul on Knight at one end, the hosts broke at pace, low centre was initially stabbed goalwards by Yates, which was blocked, but GARNER was there to force home the rebound.
Clarke-Harris nodded a free-kick from Grant over the crossbar on 73 minutes after a foul on Thompson. Posh made a second change on 80 minutes as Sammie Szmodics replaced Norburn. The home side doubled the lead on 86 minutes as a drilled corner hit YATES and went in from close-range.
Nottingham Forest: Samba, Spence, Worrall, Colback, Grabban (sub Taylor 87min), Johnson, Zinkernagel, Ojeda (sub Cafu 81min), Yates, McKenna, Garner. Unused subs: Horvath, Figueiredo, Bong, Carvalho, Mighten.
Posh: Cornell, Butler, Thompson, Knight, Edwards, Burrows (sub Coventry 68min), Norburn (sub Szmodics 80min), Taylor, Dembele, Clarke-Harris, Grant. Unused subs: Blackmore, Beevers, Kent, Tomlinson, Corbett.
Half-time: Nottingham Forest 0-0 Peterborough United
Full-time: Nottingham Forest 2-0 Peterborough United
Attendance: 28,308 (1,987 Posh fans)
Referee: Thomas Bramall