Morten Gamst Pedersen and Benni McCarthy grabbed the goals that all but secures Rovers' Premier League status for a further season.
Only the cruelest set of unlikely mathematical circumstances will stop Rovers from being in top flight football once again as this win over Portsmouth sees them nine points clear of the bottom three, with Newcastle and Middlesbrough having just three games remaining and a healthier goal difference.
It was a goal in each half for Rovers as Morten Gamst Pedersen took advantage of David James' hesitancy to fire Rovers in front on 31 minutes. It was the Norwegian's first goal this season.
A lacklustre Portsmouth side rarely threatened and when Hermann Hreidarsson handled Benni McCarthy's shot just before the hour mark, the South African made no mistake from the spot.
John Utaka wasted the opportunity to set up a nervous ending when he blazed a penalty over the bar after Andrews was harshly adjudged to have handled, but despite a late spell of possession Paul Robinson was rarely tested as it is Rovers, and not Portsmouth, that reach the coveted 40 point mark.
Before the game Sam Allardyce was forced to make one change from the side that had faced Manchester City seven days earlier. Dutch international Andre Ooijer sustained a slight hamstring strain in training, his place taken by Keith Andrews.
On a greasy surface it was Rovers who started brightly, zipping the ball around with ease, taking the game to the side immediately above them in the league.
But Paul Robinson was the first 'keeper to be called upon when Keith Andrews' misplaced header presented a chance for Nadir Belhadj, but the Rovers number one raced to the edge of the area to thwart the danger.
Paul Hart's side appeared nervous, unable to cope with the commitment and endeavour from Rovers, but whilst the home side enjoyed the lionshare of possession, they created little in the way of clear cut chances in the first half hour.
A change of position brought about a change in fortune for Rovers as Morten Gamst Pedersen and El Hadji Diouf swapped sides. And it was the former Senegal international that brought about a swift attack down the left, finding Benni McCarthy who set Stephen Warnock racing away with a flick of the ball.
The Rovers left back charged into the penalty box and drilled the ball hard and low across goal, Diouf got the slightest of touches but the ball flashed agonisingly wide of the far post.
But that agony wasn't felt for long as on 31 minutes Rovers were in front. Vince Grella and Tugay were working tirelessly in the centre of midfield to win the ball back allowing Stephen Warnock to move further forward.
Warnock curled the ball to the back post where the impressive Chris Samba chose to chest the ball down, but he did enough to put England goalkeeper David James in two minds and as Samba put the Portsmouth stopper off Morten Gamst Pedersen arrived to fire the ball into the back of the net.
It was the Norwegian's first goal of the season, and like Ryan Nelsen a fortnight before, he picked the perfect time to get off the mark.
Chris Samba continued to be the thorn in the Pompey side, neither Distin or Campbell able to cope with his ungamely style. The Congo international almost nicked a long ball from Andrews past David James, but referee Mike Riley deemed the defender turned attacker had fouled the goalkeeper.
It wasn't until two minutes before the half time break that Paul Robinson's goal was threatened. A Sean Davis free-kick found Hreidarsson in the area, but he headed past the post.
No changes were needed for Sam's side and they started second half in the ascendancy. From a Pedersen throw into the area Samba again won the crucial flick, the ball perfect for Stephen Warnock to volley goalwards but Kaboul got a vital block to send the ball for a corner kick.
Morten Gamst Pedersen went close to adding his and Rovers' second of the game with a 51st minute free-kick that deflected narrowly over. From the resulting corner kick Chris Samba saw a goal ruled out for pushing in the area, although the decision wasn't conclusive.
With Portsmouth showing little in the way of attacking play, manager Paul Hart made a double change, John Utaka and Kanu brought on to add more firepower up front.
But it was at the other end where the play was centred and on 57 minutes a Benni McCarthy effort struck the arm of Hreidarsson in the penalty area, and a spot-kick was awarded.
The South African himself stepped up to take the kick and made no mistake, sending David James the wrong way with a calm assured effort into the left corner of the goal.
Jermaine Pennant was Portsmouth's third and final change of the match and with his introduction the visitors finally gave the Rovers defence something to think about.
A swift passing move saw Peter Crouch deliver the ball to Pennant rushing into the area from the right, but as he drilled the ball low across the area Hreidarsson just couldn't connect at the back post.
That was one let off for Rovers and four minutes later came another. Vince Grella lost possession in the centre and Kanu found John Utaka running through on goal.
He rounded Paul Robinson and shot towards goal, but whilst he had passed the Rovers goalkeeper, he wasn't able to get the ball passed captain Ryan Nelsen who cleared the ball away.
With those two missed chances the Portsmouth heads dropped realising there was to be no way back. Even a harshly awarded penalty couldn't help Pompey when Mike Riley ruled that Keith Andrews had handled the ball in the area when he turned his back on a Kanu centre.
John Utaka stepped up and precisely clipped the ball over the crossbar much to the relief of the home supporters.
But that was as close as the visitors came to pulling a goal back, Rovers seeing the match out comfortably to claim their third home win on the trot, something they haven't achieved for three years.
So the magic 40 point target has been met, Rovers can almost relax in their final two league games.
ROVERS: Robinson, Andrews, Nelsen (c), Givet, Warnock, Diouf, Grella, Tugay, Pedersen, Samba, McCarthy (sub Mokoena 83 mins).
Subs not used: Bunn (GK), Khizanishvili, Villanueva, Treacy, Olsson, Doran.
PORTSMOUTH: James, Kaboul (sub Pennant 64 mins), Johnson, Mullins, Hreidarsson, Crouch, Distin, Hughes (sub Kanu 53 mins), Campbell (c), Davis, Belhadj (sub Utaka 53 mins).
Subs not used: Begovic (GK), Nugent, Cranie, Basinas.
Booked: McCarthy, Andrews, Nelsen (Rovers), Johnson (Portsmouth).
Attendance: 24,234.
















