It was not exactly the Nightmare before Christmas.
But Pompey were certainly lacking festive cheer after individual errors saw their fine run of form brought to an end at high-flying Shrewsbury.
Things appeared to be going the visitors’ way when Luke McGee saved Shaun Whalley’s penalty following a lifeless first half.
But Whalley and substitute Stefan Payne both capitalised on sloppy defending to maintain the Shrews’ magnificent home record.
The game began in cautious fashion and neither side really looked like scoring in a scrappy opening 45 minutes.
Pompey’s three bookings were arguably the most noteworthy incidents, although the Blues could perhaps feel aggrieved to see Matt Clarke, Jamal Lowe and Brandon Haunstrup’s names all taken.
There were a few balls pumped into Shrewsbury’s box, but nothing to trouble Dean Henderson between the sticks.
More concerning was a long-range attempt by Kennedy on 19 minutes, with the keeper managing to push the ball clear after it bounced awkwardly in front of him.
Not too much was happening at the other end of the pitch, although Clarke had to head away Alex Rodman’s curling effort.
And Christian Burgess then made a well-timed challenge inside the box to halt Carlton Morris’ path to goal.
But, with the game drifting towards the interval, neither stopper had realistically looked like conceding.
That almost changed in stoppage-time, though, as McGee showed good reactions after Whalley’s cross was diverted towards the net by an inadvertent Haunstrup deflection.
Shrewsbury Town 0
The first half had been forgettable – and Blues fans will be keen for the second period to also escape their memories.
Shrewsbury were given an excellent opportunity to break the deadlock soon after the restart when Christian Burgess lost the ball to Whalley.
He burst into the box and when McGee came charging from his line to deal with the danger, referee Darren Handley decided he took the man and not the ball.
It was Whalley who stepped up to take the spot-kick, only for his tame effort to be saved by the diving Blues keeper.
Pompey almost made him pay for his profligacy when Brett Pitman won a free-kick, but Henderson was equal to the skipper’s effort.
And it was the hosts who took the lead just before the hour mark when McGee tried to stop a deflected Jon Nolan effort from going out for a corner.
The keeper could not keep hold of the ball, however, and Whalley capitalised by sliding it into the net.
Jackett immediately made a double substitution, with Lowe and Kennedy making way for Oliver Hawkins and Kyle Bennett.
But the Blues were looking ragged after falling behind and McGee did well to beat Whalley to Carlton Morris’ threaded pass.
Conor Chaplin replaced Pitman in one last effort by Pompey to try to find a spark of magic and grab an equaliser.
Instead, Shrewsbury grabbed a late second goal, as Payne stole the ball from Clarke and found the target, despite McGee’s best efforts to keep it out.
Pompey kept plugging away – no doubt inspired by a noisy travelling army – but there was to be no Christmas miracle.
Shrewsbury (4-1-4-1): Henderson; Bolton, Nsiala, Sadler, Beckles; B.Morris; Whalley, Nolan, Ogogo (c), Rodman (Godfrey 87); C.Morris (Payne 75)
Goals: Whalley 59, Payne 81
Booked: C.Morris, Nolan
Subs not used: MacGillivray, Riley, Gnahoua, Dodds, John-Lewis
Pompey (4-2-3-1): McGee; Thompson, Burgess, Clarke, Haunstrup; Close, Rose; Lowe (Hawkins 60), Evans, Kennedy (Bennett 60); Pitman (c) (Chaplin 77)
Booked: Clarke, Lowe, Haunstrup
Subs not used: Bass, Donohue, May, Main
Referee: Darren Handley
Attendance: 7,429 (1,094 Pompey fans)