Report | Portsmouth 3 Swansea City 1
Swansea City were denied a point at Fratton Park after Terry Devlin and Thomas Waddingham struck in stoppage-time for Portsmouth.
The Swans had trailed at the interval to the first of Devlin's two strikes after a first half where they created little of note in a scrappy contest and also lost Stephen Welsh to injury.
But the visitors improved after the break and from the hour mark began to take a stranglehold on proceedings, and they were rewarded when Vipotnik showed characteristic coolness to slot home from the spot with six minutes of the 90 remaining.
They then struck the woodwork as they sought a winner, only for Devlin to snatch victory for the home side as he found the bottom corner after a corner had fallen to him in the area, before Waddingham added another via a breakout.
The Swans had shown little of the fluency that had characterised the weekend win over Blackburn, but had battled to put themselves in position to get something from the game only to be denied at the death.
Each side had shown four changes from their weekend fixtures, with Jenson Seelt, Marko Stamenic, Goncalo Franco and Adam Idah the players to come into the Swansea starting line-up.
Ben Cabango and Ross Stewart were among the substitutes, while Jisung Eom and Stephen Eustaquio were absent through injury.
In a scrappy opening, the hosts had the first sight of goal as a couple of hopeful punts fell kindly for Adrian Segecic, but he dragged his low effort wide of the target.
Lawrence Vigouroux then denied Tyrese Shade after the winger had run onto a loose ball and cut inside to fire away an awkward strike.
The Swans had plenty of the ball, but could not find the fluency to break down an organised and stubborn home defence.
They then suffered a blow when Welsh was forced off by a late, needless challenge from Ebou Adams, who caught the Scotland international on the ankle after the Swansea defender had already nicked the ball away from him.
That saw Cabango introduced in his place, and Swansea responded to that blow with a wonderful inter-passing move that ended with Fulton having a shot from distance saved.
But it was the home side who broke the deadlock, Segecic broke into the area, before being forced wide, but the ball eventually fell for Devlin, who calmly steered a low volley into the far side of the net with his right foot.
That proved the only score of the half, and the visitors returned to the dressing room knowing they would need to be vastly improved if they wanted to a third league win in a row over their hosts for the first time.
The opening minutes of the second half were frantic, substitute Elijah Just sent a strike over the bar from the edge of the box while Marlon Pack did the same at the other end.
Matos introduced Vipotnik on the hour mark and seconds later Swansea had their best chance of the night as Joseph Opoku had a volley blocked and Just could not convert after the Slovenian had brought down a Josh Tymon cross into the New Zealander’s path.
That sparked a period where the Swans began to enjoy some concerted pressure for the first time in the contest with Vipotnik seeing a shot blocked when he probably should have fed Josh Key in space on the overlap.
Key then just failed to reach a Just cross as he arrived at the far post as the game headed into the final 10 minutes, with Stamenic having a speculative effort saved by Nicolas Schmid.
And they got the chance to equalise when Vipotnik was pulled down by Regan Poole as he tried to reach a knockdown from Ross Stewart and the referee pointed to the spot.
Vipotnik took responsibility and scored with his trademark stutter-step and low finish.
Swansea thought they had won it when Just then rolled an inviting pass into the feet of Stewart, but the striker’s effort clipped the crossbar and Pompey went up the other end to snatch the win thanks to those Devlin and Waddingham efforts.
Swansea City: Lawrence Vigouroux; Filip Lissah (Josh Key 72), Stephen Welsh (Ben Cabango 23), Jenson Seelt, Josh Tymon; Jay Fulton (captain) (Ross Stewart 72), Marko Stamenic, Goncalo Franco; Joseph Opoku, Melker Widell (Elijah Just 46), Adam Idah (Zan Vipotnik 60).
Unused Substitutes: Andy Fisher, Josh Key, Jeremy Monga, Tom Iorpenda, Ross Stewart, Thomas Woodward.
Portsmouth: Nicolas Schmid, Regan Poole (captain), Adrian Segecic (Abu Kamara 72), Jayden Meghoma, Tyrese Shade (Zak Swanson 80), Terry Devlin, Odin Bailey, Marko Milovanovic (Thomas Waddingham 72), Iyad Mohamed (Marlon Pack 54), Ebou Adams (Josh Murphy 72), Madiodio Dia.
Unused Substitutes: Daniel Bielica, Conor Shaughnessy, Rocco Shein, Zak Swanson, Ryan Kavuma-McQueen.
Referee: Matt Corlett
Attendance: 18,897 (828 away)