The game seemed to be heading into half-time goalless after a frantic opening that saw Pompey's debutant goalkeeper Alex Cisak produce several good saves.
But Gary McSheffrey put the hosts in front after 41 minutes after latching on to a clever through-ball from James Bailey before slotting past Cisak.
Sky Blues defender William Edjenguele almost doubled the lead eight minutes into the second half but was denied by two brave blocks - first from Darel Russell, then from Mustapha Dumbuya on the goalline.
Pompey searched for an equaliser as the nerves crept in for City, but goalkeeper Joe Murphy was equal to everything the visitors - and Nathaniel Mendes-Lang in particular - could throw at him.
David McGoldrick thought he had added a second in the 88th minute when he tapped in the rebound after Carl Baker had hit the post, but it was ruled out for offside and three minutes into stoppage-time McLeod capitalised on hesitation between Murphy and Richard Wood to nip in and steal a point.