Ryan Taylor returned from injury to get Bristol City's Championship season going as Crystal Palace fell to a second straight defeat.
Taylor, who missed the start of the season with an ankle problem, struck before Martyn Woolford got a second.
Jon Stead added a penalty, and Albert Adomah made it four after Kagisho Dikgacoi had pulled one back.
Earlier, Bristol City completed the signing of striker Sam Baldock from West Ham on a three-year contract.
Baldock was paraded before the Ashton Gate crowd at half-time, but may find it hard to get into the starting line-up on this evidence.
Stead had already hit the post when he set up fellow striker Taylor to hammer in the first goal.
Palace were hit by a second only three minutes later, when Woolford finished with his left foot from 12 yards out.
Stead could have scored before half-time, but Palace keeper Julian Speroni blocked his close-range effort with his feet.
The former Blackburn and Sunderland striker did score from the penalty spot just before the hour mark after Jonathan Parr's foul.
Dikgacoi struck to reduce the deficit after good work from Owen Garvan and Aaron Wilbraham but Adomah thumped in a goal from 25 yards to end any hopes of a Palace comeback.
Bristol City manager Derek McInnes told BBC Radio Bristol:
"I think the performance was terrific from start to finish and we made our intentions clear from the outset.
"The quality of the goals were good as well and we could have scored more.
"Ryan (Taylor) has had a good pre-season and it was always said we would go with a more physical presence in this game.
"I thought he was terrific and he should be really pleased with his performance. He'll take a lot of confidence from that."