If you're willing to pay the price, you have two options:
1. Throw two or three times as many units at them as normal, in a massed wave. You will take heavy losses, but if you've got four or five units across by 3 or 4 units deep, they won't be able to kill everything, you'll get the city.
2. Throw Great Generals at the problem. Chain citadels into advantageous positions and take advantage.
The best solution is go deal with a different neighbor until it obsoletes, imo. Unless they're the last enemy between you and domination, or they're a runaway who you have to deal with *NOW*, you'll be able to find a better use of your units/great generals than invading against the Great Wall.