Glenn Murray scored an 81st-minute penalty to send Crystal Palace up to fifth in the Championship and keep Bristol City bottom of the table.
Murray netted after City defender Lewin Nyatanga brought down Palace substitute Jonathan Williams.
Brett Pitman squandered managerless City's best chance when he headed straight at goalkeeper Julian Speroni.
Palace have now won three of their last four league matches as their fine start to the season continues.
After the game Palace manager Dougie Freedman admitted: "I am surprised because I didn't think we would take shape as quickly as we have done.
"We find ourselves bubbling along nicely, but the good thing is the team is improving.
"It is hard work these victories, it is no fluke. But it will be a roller-coaster season, we will win a few and lose a few."
City caretaker manager Steve Wigley - who stepped down ahead of the expected appointment of Derek McInnes on Thursday - was left frustrated by referee Iain Williamson's decision to award Palace their late penalty.
"The game was decided by a poor refereeing decision. I have just watched it and I can't believe what I saw, to be honest.
"The centre-half pulled his foot away, the boy was going away from goal and the ball was going away from his legs. At any level you have to get those right.
"He said he would give me a ring if he got it wrong but I don't think I want to speak to him for a long time.