A penalty five minutes from time from Paddy McNair after some unnecessary defensive holding as a poorly-struck corner flew out of play was followed by a 95th minute second goal for substitute Josh Coburn.
But it could have been oh so different if referee John Busby - the man who sealed Posh’s promotion with one of the worst penalty decisions of all-time last season - had awarded a spot-kick for a clear foul by home ‘keeper Joe Lumley on Siriki Dembele early in the second half.
Busby gave a corner despite a perfect view of the incident. TV replays in the press box suggested the goalkeeper made no contact with the ball.
A lead for Posh might well have turned the Riverside crowd on their own struggling team. Just as well Posh boss Darren Ferguson was sitting in the stands serving a ban rather than in the dugout area or another big fine could have been heading his way.
Ferguson should have other worries though as familiar failings were again evident, most notably a slow passing tempo and some poor decision-making in the final third. Posh didn’t register a single shot on target against a makeshift defence. They managed just six shots on goal in total compared to 17 from Boro.
As expected, Posh skipper Mark Beevers was restored to the starting line-up after an eight-absence. More surprisingly Frankie Kent was left out for the first time in a Championship match this season and Josh Knight was recalled for his first appearance since September 11.
Boro appeared to have one natural defender, 36-year-old Sol Bamba, in their starting line-up. Posh had five with Nathan Thompson and Dan Butler deployed as wing-backs and Joe Ward relegated to the bench.
There was a bright opening by both sides with Posh winning a first minute corner as Dembele almost played Thompson through before Andraz Sporar headed wide from a fine left-wing cross at the other end.
Dembele and Sammie Szmodics dropped into pockets of space impressively in those opening stages. Szmodics saw a shot blocked by a defender before the game fell into a familiar Posh pattern away from home.
The ball was passed too slowly and given away too regularly. The defenders were pressed quickly as were the Posh midfielders and too often Boro defenders just stepped in front of Dembele and Szmodics to regain possession.
Luckily the home side were wasteful. Sporar missed the target with another headed chance. Duncan Watmore exposed the lack of pace in the Posh defence to reach the byline before Dai Cornell intercepted his cross and a couple of free kicks in great positions were wasted.
A poor pass from Knight was intercepted by Uche Ikpeazu, but his attempt to play the unmarked Watmore in was poor.
Six minutes were added at the end of the half mainly because of an assistant referee’s injury and in the last of them Posh lost possession up top and a quick transition saw Onel Hernandez in on goal. His shot beat Cornell, but Knight made a great save on the goal line.
Posh had offered nothing in reply. At one point resorting to a 40-yard shot from Beevers.
In addition Edwards, whose lack of natural speed was exposed a couple of times, and Jack Taylor were cautioned while a couple of poor challenges from the home side bizarrely went unpunished by Busby.
The second half started in similar fashion with Ikpeazu racing away down the left and delivering a cross that Sporar headed over.
But Posh did start to keep the ball better which led to the big penalty appeal.
Retribution almost followed immediately when dangerous wingback Tavernier cut inside and fizzed a shot just wide.
Posh were too passive off the ball at times. Inviting crosses and passes at this level is asking for trouble. Ikeapzu headed over after Watmore was given all the time he needed to land a cross on his head.
Posh were better on the ball, but they overplayed in attacking areas, most notably when Dembele received a pass from Thompson which sent him into the area with a shooting chance. Inexplicably he chose to play a return pass and Boro cleared.
Ichpeazu was then inches away from steering home a Watmore shot and Cornell got down well to keep out a shot from Onel Hernandez 15 minutes from time.
Dan Butler continued to struggle against the lively Tavernier, but Boro struggled to deliver a decent cross.
Even the corner that led to the penalty was horribly overhit, but Busby seized on his opportunity to keep renowned referee-baiter Neil Warnock happy by punishing either Beevers or Thompson for holding. Those replays confirmed both were at it as the ball travelled well over everyone’s head.
Posh had taken Dembele off by now so there was no hope of a comeback. Indeed a second goal arrived after Beever’s weak attemped tackle led to Tavernier crossing for Coburn to finish.
Posh: Dai Cornell, Dan Butler, Ronnie Edwards, Mark Beevers, Josh Knight, Nathan Thompson (sub Idris Kanu, 90 mins), Oliver Norburn, Jack Taylor, Jorge Grant (sub Harrison Burrows, 77 mins), Siriki Dembele (sub Joe Ward, 74 mins), Sammie Szmodics
Unused subs: Will Blackmore, Frankie Kent, Conor Coventry, Joe Tomlinson.
Middlesbrough: Joe Lumley, Martin Payero, Sol Bamba, Marcus Tavernier Paddy McNair, Jonny Howson, Matt Crooks, Andraz Sporar (sub Josh Coburn, 82 mins), Onel Hernandez, Duncan Watmore (Sub James Lea Siliki, 87 mins), Uche Ikpeazu (sub Isaiah Jones, 74 mins).
Unused subs: Luke Daniels, Toyosi Olusanya, William Kokolo.
Goals: Middlesbrough - McNair (pen, 85 mins), Coburn (90 + 4 mins).
Cautions: Posh - Taylor (foul), Edwards (foul), Szmodics (foul), Beevers (foul).
Middlesbrough - Payaro (foul), Ikpeazu (foul)
Referee: John Busby 5.
Attendance: 19,556 (610 Posh).