The job was done by half-time, with Marcus Harness completing a fine team move to open the scoring on his 100th appearance.
Skipper Lee Brown soon doubled the advantage, while John Marquis added a third goal just before the interval.
And with Marquis netting again following the restart, the only question was whether the rain would scupper things.
There was certainly plenty of standing water in the corners, but not enough to trouble referee Ben Toner.
Danny Cowley stuck with the same side that had been beaten on the road by Burton earlier in the week.
It might have come as a surprise to some following a performance at the Pirelli Stadium that was below-par at best.
But it looked an inspired decision following a first half display that blew the table-topping visitors away.
Pompey dominated from the off, dealing with the treacherous conditions – that left standing water on the south side of the ground – much better than their opponents.
Harness saw an early attempt deflected over, while Tom Flanagan did well to stop the same player receiving a square pass from Marquis.
But he did break the deadlock on 19 minutes by completing a fine team move that started with Gavin Bazunu.
He found Brown on the left and the skipper played a neat one-two with Ronan Curtis before finding HARNESS, who drilled a low shot inside Thorben Hoffmann’s near post.
Sunderland did have an early chance to level with a free-kick from Luke O’Nien that was curled narrowly over.
And there was a scary moment when Bazunu tried to roll the ball out for Kieron Freeman, only for it to get stuck in the sodden turf and have to be hurriedly dealt with by the defender.
But the Blues had a cushion on 33 minutes – and it was another impressive goal that saw them double their advantage.
Curtis did well to win back possession on the left and a low centre from Harness was back-heeled by Marquis for BROWN to fire home.
They kept pouring forward and Harness was not far off target with a curling strike after cutting in from the left.
And there was still time for things to get even better for the hosts when Carl Winchester was penalised for a foul on the impressive Curtis on the left.
The Republic of Ireland international took the free-kick himself and MARQUIS got in front of Dennis Cirkin to flick the ball into the net.
The conditions continued to deteriorate throughout the interval and the ball was getting particularly held up in the corners once the action restarted.
Pompey kept trying to add to their lead, though, and an instinctive effort from Curtis was not too far off target.
And Shaun Williams went close just before the hour mark, meeting Brown’s corner with a header that was just about prevented from crossing the line by Hoffmann.
But the Blues did go further ahead a few moments later after Joe Morrell curled a fine ball into the box.
MARQUIS stooped to meet it and although his header was kept out by Hoffmann, the striker was left with a simple tap-in.
There was almost another goal when Harness stayed onside to collect an incisive pass from Curtis and square for Ryan Tunnicliffe.
The midfielder tried to chip the ball over the advancing Hoffmann, but the keeper stayed upright to keep it out.
That was the last piece of action for Harness, who received a standing ovation after making way for Louis Thompson.
There was no let-up from the Blues as the game entered its closing stages, with their work-rate never dropping.
Fratton Park rose to its feet to applaud Marquis – who had provided two goals and one assist – when he made way for Ellis Harrison.
And the final few minutes passed by without incident to ensure that the home faithful went home singing in the rain.
Pompey (3-4-3): Bazunu; Freeman, Raggett, Williams; Romeo, Tunnicliffe, Morrell, Brown (c); Harness (Thompson 74), Curtis, Marquis (Harrison 85)
Goals: Harness 19, Brown 33, Marquis 45, 61
Booked: Tunnicliffe, Curtis
Subs not used: Bass, Downing, Jacobs, Hackett, Hirst
Sunderland (4-2-3-1): Hoffmann; Winchester, Flanagan, Wright, Cirkin; Evans (c) (Neil 74), O’Nien; O’Brien, Embleton (Doyle 46), Dajaku (Pritchard 68); Stewart
Subs not used: Burge, Huggins, Alves, Taylor
Referee: Ben Toner
Attendance: 17,418 (2,110 away fans)