All the goals came in the second half of a lively clash, Barry Robson putting the visitors ahead from the penalty spot and Matthew Bates making it 2-0.
A penalty from Greg Halford gave Pompey hope, but substitute Marvin Emnes sealed the points for Boro, who had Rhys Williams sent off at the death, to boost their play-off hopes.
But defeat at the end of another turbulent week left the hosts deep in relegation trouble.
The club earlier this week loaned club captain Liam Lawrence out to Cardiff in a desperate bid to reduce the wage bill after administrator Trevor Birch revealed they may not have enough funds to complete the season.
Birch then came under fire from former owners Balram Chainrai and Levi Kushnir, who alleged not enough was being done to avoid the possibility of liquidation.
All that did not prevent 16,770 attending Fratton Park, with chants of "we're not going to fold" and "we will never die" ringing around the ground for much of the game.
There was some good news for Pompey boss Michael Appleton before kick-off as he was able to welcome back the fit-again David Norris, with Aaron Mokoena dropping to the bench.
Middlesbrough manager Tony Mowbray left Julio Arca and leading scorer Emnes on the bench after a 2-0 defeat against Reading last time out, and brought in Nicky Bailey and loan signing Adam Hammill.
Norris, making his first start since January, had the first chance of the game as he just failed to get a crucial touch on George Thorne's long-range shot after 15 minutes.
Stephen Henderson had to be alert to parry away Robson's low free-kick after 27 minutes, and five minutes later Scott Allan fired a set piece inches wide at the other end after Boro skipper Bates brought down Thorne.
Three minutes before half-time Henderson showed why he merited inclusion in the latest Republic of Ireland squad with a tremendous save to tip Bailey's well-executed volley round the post.
Middlesbrough took the lead 10 minutes after the break when referee Trevor Kettle spotted an infringement by Ricardo Rocha and Robson rolled in the resulting spot-kick.
Moments later Faris Haroun was lucky to stay on the pitch after two late challenges in as many minutes, although Kettle only produced a yellow card for the first.
Pompey's frustrations were growing and it got worse just after the hour-mark when Bailey headed a Robson free-kick back across goal and Bates bundled the ball in.
Five minutes later Pompey were awarded a lifeline when Lukas Jutkiewicz handled Rocha's 30-yard drive, Halford stepping up to convert the penalty.
With 20 minutes left substitute Dave Kitson wasted a golden opportunity to equalise, firing wide from 12 yards when in space and with only Jason Steele to beat.
And that proved costly as Wolves loanee Hammill burst clear down the left and, although his shot was well stopped by Henderson, Emnes was able to fire home the rebound.
Late in stoppage time Boro's Williams was sent off for a second booking, having already seen yellow for bringing down Joel Ward. but the game was already won.