They showed their fighting spirit by battling back to level on three separate occasions, as the prolific Brett Pitman cancelled out efforts from Bran Inman and Stephen Humphrys.
Ian Henderson scrambled home what seemed to be a Dale winner, only for Matt Done to find his own net deep into stoppage-time.
Kenny Jackett made one change from the side that beat Wigan on home soil on Easter Monday.
Dion Donohue missed that game to attend the birth of his son, but returned at left-back, with Brandon Haunstrup dropping to the bench.
There was a minute of applause before kick-off to remember former England international Ray Wilkins, who sadly passed away earlier in the week.
The hosts might have been sitting inside the drop zone, but had won each of their past two games and made a bright start.
A hooked effort from Humphrys was deflected wide, while several crosses into the box caused Pompey problems in the opening stages.
But the Blues could have broken the deadlock when Gareth Evans picked out Pitman, only for the unmarked skipper to guide the ball over.
Instead it was Dale who scored on 13 minutes, as Inman bent a shot into the bottom corner from the edge of the area.
They thought they had another when Joe Rafferty flicked on Inman’s corner and Ian Henderson bundled the ball over the line, only to be flagged offside.
And Pompey made the most of that let-off by levelling midway through the first half, thanks to some great work from Pitman and Jamal Lowe.
The skipper held the ball up well in the centre of the pitch before releasing Lowe, who showed lightning pace to surge into the box.
He slipped at a pivotal moment, only to recover well and square for PITMAN to lash home his 20th league goal of the campaign.
The Blues then came close to forging ahead, courtesy of a thunderbolt from Evans that crashed against the crossbar.
It was Rochdale that finished the half on top, however, and Luke McGee was twice called into action to deny Rafferty and Humphrys, while Oliver Rathbone saw a shot deflected past the post.
But there was one more chance for the visitors before the break, with Pitman diverting an Evans centre over the top.
Rochdale were quicker from the blocks once the action restarted and Matt Clarke was well-placed to head clear a couple of dangerous deliveries.
But it took another fine finish for the hosts to retake the lead, as Humphrys collected Done’s pass and arrowed the ball past McGee’s grasp.
Jackett responded with a double switch on the hour mark, withdrawing Nathan Thompson and Kal Naismith for Matty Kennedy and Stuart O’Keefe.
And his side were level moments later when Donohue clipped in a free-kick that was only partially dealt with.
The ball was headed back into the danger zone by Clarke, where PITMAN was waiting to slot home again.
But the action soon switched back to the other end of the pitch and an Inman effort took a deflection to send the ball just over the bar.
Rochdale were back ahead on 71 minutes, though, when Calvin Andrew nodded Inman’s delivery across goal and Henderson bundled the ball over the line.
Jackett soon made his third and final change, with Oli Hawkins adding more firepower in place of Evans.
There was a nervy moment for the hosts when Josh Lillis failed to claim a high ball, but they were eventually able to scramble clear.
Hawkins did well to shake off having his shirt tugged and get a shot away late on, although the attempt failed to trouble Lillis.
The visitors tried to get the ball forward and four minutes of stoppage-time gave them hope of finding an equaliser.
And it arrived when Jack Whatmough’s centre was nodded towards goal by Pitman, with DONE only able to head the ball into his own net from a couple of yards out.
Rochdale (4-1-4-1): Lillis; Rafferty, McGahey, McNulty, Done; Camps; Andrew, Rathbone, Henderson (c), Inman (Delaney 80); Humphrys (Thompson 74)
Goals: Inman 13, Humphrys 57, Henderson 71
Subs not used: Moore, Wiseman, Ntlhe, Dobre, Davies
Pompey (4-1-4-1): McGee; Thompson (Kennedy 60), Whatmough, Clarke, Donohue; Walkes; Lowe, Evans (Hawkins 72), Close, Naismith (O’Keefe 60); Pitman (c)
Goals: Pitman 26, 62, Done 90+2 (og)
Subs not used: Bass, Burgess, Haunstrup, Ronan
Referee: Scott Oldham