First of all against walled cities I only ever use sap points and ladders.

Don't automanage.

Once you have a practical breach, use missile troops in open order to keep the archers on the wall busy and to pepper any troops sent to defend it.

I usually follow a set pattern in storming a breach.

Massed archers and javelins to soften up the defenders.

Then send in the dogs of war to cause chaos and whilst the enemy is trying to finish them off storm it with a column of heavy infantry. As soon as you are inside tally off units to seize the towers and clear the walls. Keep feeding units onto the walls until they are cleared and in your hands then replace their archers with yours.

Let the archers slaughter any counter-attacks.

After that mass your troops inside the walls. Form a column and march on the Town Square.

If you are going to lose it will be because you can't gain a foothold inside the breach thats the hardest part. Once you have the walls and all your troops inside the city it should be pretty easy.