I've found 2 basic reasons for insta rout. The first one is throwing troops with zero experience at hordes of barbarians who have some experience, and the second is fighting large battles with only a 1 or 2 star general means the radius of his anti rout effect is very small, and troops panic easily. Try to keep your general close to your infantry when things are thick. Also try to give your infantry adequate missile and cavalry support so they don't feel isolated out there.
Bookmarks