My strategy:
1) have more troops
2) have more artillery
3) don't lose troops*
For cities:
1) bombard
2) attack
If I lose even one unit I get very pissed (at myself). Normally.
Current game I was Egypt (on giant earth map), friends and Dpact with Theo. I had a 10+ city empire, Persia was 5+ (I think). Theo is at war with Carth/Greece. Persia declares on Theo. Germany and Rome then declare on Theo.
Apparently, once the Dpact kicks in on the first attack, it doesn't apply to secondary aggressors. So the pact put me at war with Persia (who had expanded to Arabian Penninsula), but not Rome/Germany. So I declared on Greece, Rome, Germany, am now at war with 4 civs, 3 on my border.
For the med sea, I just put a few ships out to sea (2-3), and bombarded, because Theo has a nice fleet. I fortified one musket at the Dardanelles. To the east, Persia had 3 cities closely grouped. I had ranged fortified on hills, muskets in front of them, and a few lancers/knights.
I lost two units to bombardment, but I was willing to sacrifice them to take out Persia's artillery. The three city placement allowed two cities to bombard a single unit = I had to cut down on Persia's ranged power. So I would use xbows to snipe Persian trebuchets, then send in a knight/lancer.
Mind you, the goal of my assault wasn't even to take a city, but to deflect Persia's assault away from Byzantium.
If there was anything to learn in the example, its that enemy artillery should be targeted first (unless enemy cavalry is running amok among YOUR artillery). I gave the example to show one of the rare times I was willing to lose a unit. I could have just held my defensive position on the hills, but I was impatient. You could play an entire game and not lose a unit.
The siege strategy is always the same, surround and bombard like heck, then send in a melee.