I'm very much of the opinion that the best way to punish civ's that are getting on my nerves is to not capture cities at all. Instead I bait them into declaring war on me, at which point I send plenty of cavalry into their lands and start pillaging everything I don't want. Crush their Army. Steal their workers. Pillage their trade routes. Once their lands are a burning disaster, they have no military to defend themselves and I'm closing in on their capitol I wait for the peace treaty to come, usually chock full of luxury goods and gold, maybe even a small city (which I'll then promptly sell to the highest bidder). Then after that it doesn't matter how many cities they have still have standing, it takes them forever to get them functional again and they're pretty well out of the game. If I HAVE to capture a city to force their hand into favorable peace terms then I'll just sell the city anyways, some civ is almost always willing to buy it off your hands, but only after I've razed it down quite a bit so it's little threat of really helping whoever buys it. You can teach the AI a lesson without killing your happiness, and if you play your cards right you can make out like a bandit.