Daniel Johnson's three goals this season have all been penalties
Daniel Johnson's first-half penalty was enough for Preston North End to beat Bristol City and hand the Robins their third straight Championship loss.
Johnson placed his spot kick down the middle after top scorer Scott Sinclair was brought down by the dangling leg of Robins defender Taylor Moore.
Former Celtic and Swansea forward Sinclair also saw a low shot deflected wide and volley well saved by Daniel Bentley as Preston deserved their lead at the break.
Dean Holden's visitors were a different side after the half-time introduction of Antoine Semenyo who, along with midfielder Callum O'Dowda, forced several excellent stops from Declan Rudd as Preston held out for victory.
Bristol City stay ninth, two points from the play-offs, after failing to score for the fourth time in five games, while Preston are now four points behind them in 13th.
Referee Geoff Eltringham paused to award the decisive penalty as he appeared to wait and see if there would be an advantage for Preston, who went on to hit the bar through Tom Barkhuizen before he brought play back.
Robins defender Moore got a touch on the ball in the challenge but also caught Sinclair, with Johnson sending Bentley the wrong way from the spot after a stuttering run-up.
City were particularly dangerous down their right as they chased an equaliser in the second half, Jack Hunt twice crossing for Semenyo to go close before O'Dowda saw a header tipped over by the impressive Rudd.
Preston were perhaps fortunate not to down go to 10 men when Darnell Fisher escaped a second yellow card after 66 minutes for a late challenge on livewire Semenyo, with the full-back taken off minutes later.
But Alex Neil's side, who have conceded a Championship-high 30 goals this season, have now kept back-to-back clean sheets at Deepdale for the first time since December 2017 and not lost any of their past 15 league meetings with the Robins.
The Lilywhites could have made the closing stages more comfortable but substitute Emil Riis Jakobsen saw a low effort saved by Bentley.
Line-upsPreston
Substitutes
Bristol City
Substitutes
Referee:Geoff EltringhamMatch StatsHome TeamPrestonAway TeamBristol CityPossessionHome53%Away47%ShotsHome14Away8Shots on TargetHome4Away3CornersHome9Away7FoulsHome14Away10Live TextPost update
Match ends, Preston North End 1, Bristol City 0.
90'+6'Full Time
Second Half ends, Preston North End 1, Bristol City 0.
90'+5'Post update
Corner, Bristol City. Conceded by Tom Bayliss.
90'+5'Post update
Corner, Bristol City. Conceded by Alan Browne.
90'+4'Post update
Attempt blocked. Callum O'Dowda (Bristol City) left footed shot from outside the box is blocked. Assisted by Tommy Rowe.
90'+4'Post update
Foul by Jayden Stockley (Preston North End).
90'+4'Post update
Tomas Kalas (Bristol City) wins a free kick in the defensive half.
90'+3'Post update
Corner, Bristol City. Conceded by Joseph Rafferty.
90'+2'Post update
Attempt blocked. Chris Martin (Bristol City) left footed shot from the left side of the box is blocked. Assisted by Tyreeq Bakinson.
90'+1'Post update
Attempt missed. Joshua Earl (Preston North End) header from the centre of the box is high and wide to the right. Assisted by Joseph Rafferty with a cross following a corner.
90'+1'Post update
Corner, Preston North End. Conceded by Daniel Bentley.
90'+1'Post update
Attempt saved. Emil Riis Jakobsen (Preston North End) right footed shot from the left side of the box is saved in the bottom right corner. Assisted by Scott Sinclair.
89'Post update
Attempt missed. Jayden Stockley (Preston North End) left footed shot from outside the box is too high. Assisted by Tom Barkhuizen.
87'Post update
Attempt missed. Emil Riis Jakobsen (Preston North End) header from the centre of the box misses to the left. Assisted by Tom Barkhuizen.
86'Post update
Corner, Bristol City. Conceded by Declan Rudd.
86'Post update
Attempt saved. Callum O'Dowda (Bristol City) header from the centre of the box is saved in the top centre of the goal. Assisted by Jack Hunt with a cross.
86'Post update
Attempt missed. Tom Bayliss (Preston North End) right footed shot from the right side of the box is high and wide to the right. Assisted by Emil Riis Jakobsen following a fast break.
84'Post update
Attempt missed. Alan Browne (Preston North End) header from the centre of the box is close, but misses to the right following a corner.
83'Post update
Corner, Preston North End. Conceded by Tommy Rowe.
80'Post update
Joshua Earl (Preston North End) wins a free kick on the left wing.
Page 1 of 5rewindpreviousNavigate to the next pagenextNavigate to the last pageforward
Source: bbc.com