The contest at a bitterly cold St Andrew’s rarely moved above second gear, although both sides had periods of dominance.
But the Blues were left rueing a rare defensive lapse when substitute Matty Godden nipped in to score the winner for the hosts.
Kenny Jackett made one change from the side that won at Tranmere to set a new club record at the weekend.
John Marquis returned to lead the four-man forward line in place of Ellis Harrison, who dropped to the bench.
It was the hosts who shaded a poor opening 45 minutes of football, without ever really looking like breaking the deadlock.
Their best opportunity came after just six minutes, with Alex Bass getting down to deal with Liam Walsh’s low drive from the edge of the box.
Ryan Williams had a couple of half-chances at the other end, but saw both of his efforts blocked in quick succession.
Callum O’Hare – sporting a bandage after receiving a nasty gash to the head at the weekend – had a shot deflected wide for Coventry.
And the hosts enjoyed a spell of possession where they forced the Blues back deep inside their own half.
But nothing really came of it and Bass was being well protected by a disciplined display from the back four.
Walsh screwed one shot wastefully wide, while a long-range attempt from O’Hare stung the palms of Bass.
Marko Marosi was not being tested in the Coventry goal, although would have been relieved to see the ball ricochet clear after Ronan Curtis charged down his clearance.
And it was the hosts who had the final effort before the break, as Jamie Allen’s shot looped over Bass, but fortunately for Pompey, also over the bar.
Coventry City 0
Williams tried to flick a pass through to Marquis once the action restarted, although Marosi was able to gather.
But the keeper was – despite the lack of chances – looking unsteady between the sticks and recovered after taking a poor touch from a back-pass by former Fratton loanee Dom Hyam.
Allen then whipped a teasing cross into the box at the other end, although a stretching Amadou Bakayoko could only divert the ball wide.
Jackett made a double switch just past the hour mark, with Marquis and Williams withdrawn for Harrison and Marcus Harness.
And with his very first touch, Harrison met James Bolton’s low delivery with a near-post shot that was saved by Marosi.
Harness then had a chance on 74 minutes after his attempted pass had been blocked, with the winger curling the ball over the bar.
Pompey were enjoying much more possession, but were lacking a clinical touch in the final third of the pitch.
And when Marosi unconvincingly pushed out Harrison’s low pass across the box, Steve Seddon blazed the loose ball high over the bar.
The hosts brought on Godden in an attempt to find a winner and the substitute immediately responded.
O’Hare’s lofted pass caught the Blues defence cold, with Godden spinning sharply and neatly finishing.
But the visitors almost found an immediate leveller when Tom Naylor sent the ball into the box and Cameron McGeehan’s shot was well saved by Marosi.
And Coventry survived one last scare deep into stoppage-time, as a stretching Harrison could only turn the ball over the bar from a few yards out.
Coventry (3-4-2-1): Marosi; Rose, McFadzean, Hyam; Dabo, Kelly (c), Walsh, McCallum; Allen (Biamou 71), O’Hare; Bakayoko (Godden 82)
Goals: Godden 84
Subs not used: Wilson, Pask, Westbrooke, Shipley, Giles
Pompey (4-1-4-1): Bass; Bolton, Burgess, Raggett, Seddon; Naylor (c); Williams (Harness 63), McGeehan, Close, Curtis; Marquis (Harrison 63)
Booked: McGeehan, Close
Subs not used: MacGillivray, Whatmough, Brown, McCrorie, Evans
Referee: Scott Oldham
Attendance: 6,983 (1,526 Pompey fans)