The result kept the second-placed Reds five points clear of fourth-placed Portsmouth but allowed third-placed Sunderland, who won their game, to move within two points with a game in hand.
Barnsley had long periods of pressure but it was a tense encounter and a game of few chances.
Daniel Stendel made one change to the side which was held 0-0 by Burton Albion on Tuesday, with Mamadou Thiam replacing Ryan Hedges on the left wing.
The first half saw Barnsley have more of the ball and play some good football but it was the hosts who had the two clear-cut chances.
The first first shot came in the 20th minute from Jacob Brown who fired wide of the bottom right corner from outside the box. Seconds later, Portsmouth’s Bryn Morris flicked a header wide from a left-wing cross when well-placed in the middle of the Reds box.
Cauley Woodrow had the first shot on target in the 26th minute but his tame, low 25-yard effort was easily gathered by the home goalkeeper. McGeehan the curled a 25-yard effort wide after a nice backheel flick by Thiam.
Portsmouth had a huge chance in the 39th minute as Liam Lindsay lost the ball deep in his half and Omar Bogle put Viv Solomon-Otobor clean through but Davies made an excellent one-on-one save.
The second half saw Portsmouth begin well with Morris shooting over from long-range before Ronan Curtis cut in from the right wing and shot straight at Davies from a tight angle.
The penalty was awarded in the 60th minute as Dimitri Cavare tripped up Solomon-Otobor on the left edge of the box, with Barnsley claiming it was outside the area. But Davies sprang to his right to brilliantly deny Omar Bogle from 12 yards.
Barnsley left-back Dani Pinillos should have put them in front five minutes later after Woodrow put him clean through on goal but he blazed over from 12 yards out.
Brown then came agonisingly close in the 82nd minute when his header from an Alex Mowatt corner appeared to take a big deflection up onto the underside of the crossbar then was cleared.
Pinnock then headed a cross by substitute Ryan Hedges but goalkeeper Craig MacGillivray got down to his right to easily keep it out of the bottom right corner.
Portsmouth: MacGillivray; Walkes, Burgess, Clarke, Brown; Naylor, Close, Morris; Solomon-Otabor (Lowe 77mins), Bogle (Vaughan 84), Curtis. Unused: Bass, Haunstrup, Donohue, Evans, Hawkins. Yellow cards: Clarke. Barnsley: Davies; Cavare, Pinnock, Lindsay, Pinillos; Brown, Mowatt, McGeehan (Dougall 90+3), Thiam (Hedges 75); Bahre (Adeboyejo 59mins); Woodrow. Unused: Walton, Jackson, Styles, Green. Yellow cards: McGeehan.
-
13:29pm
-
13:39pm
-
13:49pm
-
14:00pm
-
14:00pm
-
14:02pm
-
14:03pm
-
14:08pm
-
14:08pm
-
14:20pm
-
14:20pm
-
14:21pm
-
14:23pm
-
14:31pm
-
14:35pm
-
14:39pm
-
14:40pm
-
14:40pm
-
14:43pm
-
14:44pm
-
14:47pm
-
14:47pm
-
14:50pm
-
14:51pm
-
14:52pm
-
14:53pm
-
14:55pm
-
14:58pm
-
14:59pm
-
15:01pm
-
15:04pm
-
15:05pm
-
15:06pm
-
15:08pm
-
15:11pm
-
15:12pm
-
15:14pm
-
15:16pm
-
15:17pm
-
15:20pm
-
15:21pm
-
15:23pm
-
15:24pm
-
15:26pm
-
15:26pm
-
15:27pm
-
15:29pm
-
15:31pmYELLOW CARD
-
15:35pm
-
15:36pm
-
15:37pm
-
15:39pm
-
15:41pm
-
15:43pm
-
15:46pm
-
15:47pm
-
16:04pm
-
16:06pm
-
16:08pm
-
16:09pm
-
16:10pm
-
16:12pm
-
16:13pm
-
16:15pm
-
16:17pm
-
16:17pm
-
16:18pm
-
16:19pm
-
16:20pm
-
16:24pm
-
16:28pmYELLOW CARD
-
16:30pm
-
16:32pm
-
16:33pm
-
16:35pm
-
16:36pm
-
16:39pm
-
16:40pm
-
16:42pm
-
16:43pm
-
16:44pm
-
16:45pm
-
16:46pm
-
16:47pm
-
16:49pm
-
16:50pm
-
16:50pm
-
16:51pm