I always mass infantry and cavalry/tanks around one city, in a semicircle of a hundred-odd units, then I force-march them past any fortifications, and when the units are fighting the enemy and some of them are attacking the city, I slip in some artillery (some 10-20 pieces, normally) to attack the city. The AI never gets near enough in time because there´s no physical space for its units to go through. Then I build some forts´n´towers, garrison and heal my troops, build new ones to take the place of the fallen, destroy the AI´s attackers that only then are beginning to appear en masse, and move on.