A first half goal from Callum Robinson gave the Lilywhites all three points at Ashton Gate to give them their first away win of the season.
Robinson scored his ninth goal of the season ten minutes before the interval, converting from close range after an excellent move involving the four forward players in the side.
Manager Alex Neil made two changes to the side that had drawn at Ipswich Town, Declan Rudd replacing the suspended Chris Maxwell in goal and the Portman Road hero Paul Gallagher coming into the midfield, with Alan Browne dropping to the bench.
And Gally was heavily involved in the first chance of the game, as a cross from the right by Sean Maguire was deflected out to the No.12, roughly 35 yards out in the right-hand channel, and with everyone expecting the shot he cleverly threaded the ball into Tom Barkhuizen eight yards out, but the striker was not expecting it and the ball bounced off him when unmarked.
Before the ten-minute mark the visitors had another chances as Robinson was sent clear by brilliant flick from Maguire. A cross back from the left by the No.7 found the Irishman, but he had to stretch for his header and Niki Maenpaa in the Robins goal claimed the effort below his cross bar.
Just before the mi-way point in the first period Barkhuizen was sent down the right by Maguire, he drove into the right-hand corner of the box and forced a smart blocking save from Maenpaa.
And it was the No.29 who was almost in on goal again on 29 minutes, from a Gallagher through ball, with Adam Webster’s back pass rescued by the leg of Maenpaa with the striker about to pounce.
But the opener came on 35 minutes and it was a brilliant PNE goal. Worked from Maguire on the left, he switched it to the right to Barkhuizen; his ball into the box was deflected and well-collected by Daniel Johnson, who ghosted to the edge of the six-yard box and saw Robinson to his left, passing perfectly for the No.7 to slide home his ninth of the season.
In the first 90 seconds of the half it could have been 2-0 as first Barkhuizen and then Maguire were both denied by superb block tackles and last-ditch efforts from City defenders – it was a blistering opening to the second period.
With eight minutes left former PNE man Josh Brownhill was the first City player of the day to test Rudd, from a 25 yards free kick, that the North End No.1 did superbly to push over the bar for a corner.
But despite six minutes of stoppage time, some excellent defending from North End meant they earned the clean sheet and the win their vocal away support deserved.
Bristol City line-up: Maenpaa, Dasilva, Webster, Baker (Eliasson, 55), Brownhill, Diedhiou (Taylor, 64), Walsh (Paterson, 55), Weimann, Pack (c), Kalas, Hunt. Subs not used: O’Leary, O’Dowda, Kelly, EIsa.
PNE line-up: Rudd, Clarke (c), Earl, Pearson, Huntington, Davies, Barkhuizen, Gallagher (Browne, 74), Maguire (Nmecha, 84), Johnson, Robinson. Subs not used: Crowe, Fisher, Moult, Hughes, Barker.
Attendance: 19,797 (566 PNE fans)
Referee: Mr G Eltringham