In older editions of D&D, rarity was achieved through ability score prerequisites: with "3d6 in order" the default character generation system, classes like the Paladin or Druid were rare because the probability of rolling those stats was low. Given that spell casting classes rely on specific scores being at least above average, you could go back to a random method for stat generation. However, it does not sound like you are so concerned about commonality as you are about power level. I think the easiest way to deal with power level is to simply ban certain spells outright -- in your case, though with flashy, damaging effects. Some spells you might convert to rituals, so they cannot be used in combat but are still potentially available.
Another option is -- as others have suggested -- to have a cost associated with spellcasting. I do not care for worlds in which churches hunt down "witches" but there are other ways. Earthdawn had an interesting system where magic was drawn from a place that had been corrupted by dark powers and every time you cast a spell that was not channeled through a prepared "matrix" (and a wizard only had access to a very few of these compared to the number of spells she might know) there was a chance some of that corruption could assail the wizard. This could do everything from cause a little psychic damage to mark the wizard by a powerful, nasty entity. With a system like this, there is an in world AND mechanical reason for limited powerful magic. You could even tie the system to how much damage a spell does, how obvious it is, its level, etc...