Magic classes have a lot more room for overpowered power combinations whereas melee don't.
Magic classes in the current design will always be much better.
You could argue that a fighter with rogue skills could do some serious damage, but for that you need both STR and DEX, while for combining all kinds of crazy spells you still only need INT. So, much more efficient.
A solution should probably be multilayered, but one thing you could start with is to make magic schools incompatible like in D&D (like opposing spheres etc. Water/fire and so on), trying to make sure one lone wizard can't use the best combos by himself