I cannot understand why the defenders had so many units killed but the attackers lost none?
I tried to stick to the same MO, infantry moved from cover to cover and out of LOS of the enemy units (as far as possible). I didn't 'overstacked' units unless I was 90% sure it was safe to do so (ie in good cover, no big enemy stacks around, etc... ). Once a squad located some enemy units the armor was called for fire support. It's quite difficult for the infantry to eliminate enemy units, located in cover or entrecnched, by direct fire. I tried to break the enemy squads with lng range fire, my infantry will then close in and try to eliminate the threat either by close combat or by denying withdrawal (ie they surrender I guess).
As soon as one of my squad broke, I moved it back in cover or out of LOS and detached a leader to rally it. If it's not possible or to risky, the broken unit with move out of LOS and stay there for the rest of the game. Guys are cut of their own units and have to stay put (happened with the panzerschreck squad).
I got lucky and eliminated the mortar on the hill early in the game. This weapon is deadly, especially against infantry n open ground.
Long story short, I tried to apply some basic infantry tactics and use my armor as fire support.
This game was played in one go, no going back to a previous save because I was not happy about a result.