Magic doesn't need to be overemphasized in game design to still be super cool high fantasy stuff, and definitely doesn't need to be overpowered either.
For instance, in the game Im writing I have a subclass you can choose for the Necromancer that I call the Path of Blood. As you might guess, its all about being more or less a blood mage, in the context of a class thats designed to be a Summoner.
One of its initial unique spells that you get is the Blood Blade. You target a wounded enemy for some amount of damage, and you summon to yourself the blood of that enemy, which forms into a weapon of your choice, with that weapons damage type(s) and special features. The weapon can only deal the amount of Composure (HP) you drained from your target, but can be used as though you're skilled with it.
A more mid-range spell is the Blood Wall. You again target a wounded enemy, and if they fail their save, their blood vessels and nerve endings erupt from the wound, and form a magically impassable wall up to 100' across and as tall as the targeted enemy. The enemy meanwhile is effectively paralyzed, and begins to lose Composure with every subsequent turn thats taken. If the wall is targeted by anyones attacks, the enemy takes the damage, and when they drop to zero, the wall fails.
These are both very useful and thematic spells, but also aren't stupidly overpowered (relative to my game anyway) or encroaching too much on what an equivalent martial character could do.
And the key there is that these are combat spells. As far as Im concerned, you can go completely hog wild with combat spells without causing an issue as long as you keep the damage rates in check relative to other classes.
But when you add similarly bonkers utility magic into the mix, thats when things start to break. The simplest hotfix in these cases, IMO, is for utility spells to have a chance to fail.
But, you can go deeper with it. DCCs magic is at times absurdly more powerful than anything we see in 5e, and it does utilize the chance of failure fix, but it does so by greatly elaborating on what kind of failures can happen, generating a lot of possibilities that are additive to the game experience.
Failing in DCC is part of the fun, and despite its magic system being nutso powerful, it doesn't suffer for it like 5e does with considerably less powerful magic.
And indeed, this is the same idea Im going to be going for in my own game. For me, utility magic mostly doesn't exist at all as formally defined spells, though neither does combat magic for that matter. Instead, most spells, unless they're class specific like the mentioned Blood spells, will have to created by players as part of the game.
And while some of the options will be for very basic utility spells (which will be considerably tough to get and will take investment, but can actually be cast without any failure chance), most utility magic you might want to try for has to be improvised instead, which comes with baked in degrees of success/failure, and will be quite difficult to be reliably consistent with even as a dedicated mage, if you don't take the time to invest in not just the required skills, but also the equipment that you'll need to craft to improve your odds.