The winger converted after Curtis Main’s header had come back off the woodwork to give the large travelling army – and all those watching live on Sky Sports – plenty to cheer.
A one-goal advantage ensured it was a nervy finale at Priestfield, but the struggling hosts never really looked like claiming an equaliser.
Kenny Jackett made two changes from the side beaten by Oldham in Pompey’s last league outing.
Striker Main was handed a first league start in more than a year in place of the injured skipper Brett Pitman.
Drew Talbot dropped to the bench to make way for Kyle Bennett, with Oliver Hawkins continuing to be deployed as a makeshift centre-back.
Nathan Thompson – who went off against the Latics with concussion – was declared fit to feature at right-back, but the game came too soon for Christian Burgess.
The watching television audience might have been forgiven for reaching for their remote, as the game took a while to find its flow.
In fact, the most noteworthy moment in the opening stages was the continuing efforts of various Priestfield staff to replace a dislodged corner flag.
Kennedy tried his luck with a curling right-footed effort, but the ball flew safely into the arms of Gills keeper Tomas Holy.
A delightful delivery from the outside of Jamal Lowe’s boot caused some problems, with Josh Parker having to head clear.
It was Ben Close who had the first decent chance on 20 minutes, though, with Holy having to get down to deal with his low drilled effort.
And a dangerous centre from Bennett flashed across the face of goal, with none of his white-shirted team-mates able to get a touch.
But the hosts grew in confidence as the first half progressed and thought they should have won a penalty on 34 minutes.
Hawkins’ challenge sent Sean Clare tumbling to the ground, only for referee Christopher Sarginson to ignore the appeals.
Pompey won a trio of corners before the break and two of them were met by Matt Clarke, but the defender sent both wide of the target.
It was Gillingham who ended stronger, though, and Parker volleyed narrowly past the post after being picked out by Lee Martin.
Pompey came tearing out of the traps at the start of the second half and were ahead after just 26 seconds.
Thompson whipped a cross in from the right and when Main’s header came back off the post, KENNEDY was waiting to stroke home the loose ball.
And Thompson might have added a second, with a cross that drifted towards goal and dipped narrowly over.
It was the visitors looking more likely to add to the scoring and a long-range attempt from Kennedy was not too far off target.
Hawkins then met another Kennedy corner, although his header lacked enough power to trouble Holy.
But Gillingham thought they had grabbed an equaliser when Finn O’Mara’s cross was converted by Parker.
The home fans leapt from their seats to celebrate before realising that the linesman had raised his flag for offside.
Jackett was forced to make his first change moments later, as Dion Donohue limped off to be replaced by Brandon Haunstrup.
Pompey had a chance to extend their lead when Bennett broke quickly on 74 minutes, but he took too long to find Lowe, whose effort was blocked.
Gareth Evans and Danny Rose were brought in for the closing stages, with Bennett and Close withdrawing to the bench.
But it was Clarke who almost grabbed a second goal for the Blues late on, diverting Kennedy’s free-kick inches past the post.
Gillingham (3-5-2): Holy; O’Hara, Ehmer, Nugent (Tucker 45); Parker, Hessenthaler, Martin (c) (List 57), Bingham, Ogilvie; Wilkinson, Clare (Oldaker 67)
Subs not used: Arnold, Simpson, Wagstaff, Nash
Pompey (4-2-3-1): McGee; Thompson, Hawkins, Clarke, Donohue (Haunstrup 67); O’Keefe (c), Close (Rose 83); Lowe, Bennett (Evans 83), Kennedy; Main
Goals: Kennedy 46
Booked: Clarke, Thompson
Subs not used: Bass, Talbot, Oxlade-Chamberlain, Naismith
Referee: Christopher Sarginson
Attendance: 8,163 (1,333 Pompey fans)