Молодая девушка по имени Софи Хаттер — старшая из трёх сестер, живущих в городе Маркет-Чиппинг. Город находится в королевстве Ингария, в котором магия является обыденным делом. Софи искусно обращается с иглой и в каморке украшает шляпки, бессознательно наделяя их душой. Как старшая из сестёр, она смирилась с тем, что не найдёт своей судьбы и будет обречена вести скучную жизнь хозяйки шляпного магазина. Но злая Болотная Ведьма превращает её в старуху, ошибочно приняв за сестру, к которой в тот момент проявлял интерес Волшебник Хоул. Софи покидает свой магазин и уходит из дома куда глаза глядят. По дороге Софи бессознательно оживляет чучело, которое как выяснится позже заколдовала Болотная Ведьма. После долгой и изнурительной дороги Софи находит пристанище в замке Хоула, известного в её родном городе как поедатель сердец молодых красивых девушек.
Вскоре Софи узнаёт, что Хоул, эгоцентричный, высокомерный и бесчестный, в глубине души является добрым человеком (а также исключительно одарённым волшебником). Его ученик Майкл по просьбе Хоула распространяет слухи о кровожадности Хоула, чтобы избежать лишнего внимания, а также не выглядеть слишком благородным в глазах короля и тем самым избежать лишних обязанностей и ответственности. Входная дверь в замок на самом деле является порталом, открывающимся в четырёх разных местах: у ходячего замка в холмах возле Маркет-Чиппинг, в прибрежном городе Портхэвен, в столице королевства Кингсбери и в родном доме Хоула в Уэльсе, где его знают под именем Хоуэл Дженкинс.
Софи заключает сделку с Кальцифером, домашним демоном Хоула: если Софи поможет разорвать договор Кальцифера с Хоулом, Кальцифер вернет Софи молодость. Однако выясняется, что условия договора не могут быть раскрыты посторонним ни Кальцифером, ни Хоулом. Софи пытается угадать, каковы эти условия, а Кальцифер подкидывает ей подсказки, которые Софи не понимает. Хоул узнает, что на Софи наложено заклятье и втайне от неё самой пытается его снять, обращаясь за помощью к другим чародеям. Когда попытки оказываются безуспешными, он приходит к выводу, что девушка сама желает оставаться старухой.
Ученик Хоула, Майкл Фишер, ведет большую часть повседневных дел Хоула, а хозяина замка занимают лишь его собственные любовные похождения. Хоул и Майкл ухаживают за младшими сестрами Софи, Летти и Мартой, соответственно. Марту, младшую сестру, отправили изучать магию, а среднюю, Летти, определили в ученицы к пекарю. Но Марта, притворившись Летти, устроила так, чтобы сёстры поменялись местами, поскольку Фанни (мать Марты и мачеха Софи и Летти) не принимала во внимание их желаний, когда определяла будущую профессию.
Когда Принц Джастин, младший брат короля, пропал во время розысков Кудесника Сэлимана — Королевского Волшебника (известного также как Бенджамин Салливан из Уэльса), король приказал Хоулу найти Сэлимана и Джастина, а также убить Болотную Ведьму. Но у Хоула были причины избегать конфликта с ведьмой: та была отвергнутой любовью Хоула и наложила на изменника заклятье. Волшебник попытался увильнуть от миссии, направив Софи под видом своей матери просить об отмене задания, но безрезультатно. Вместо того, чтобы очернить его имя, Софи, от лица Хоула, пообещала для спасения жизни принцессы уничтожить Болотную Ведьму. Так её слова сделали Хоула вторым Королевским Волшебником, чего он всеми силами старался избежать.
Хоул продолжал избегать встреч с Ведьмой Пустоши, пока та не заманила Софи в ловушку: поверив, что нынешняя любовь Хоула, Лили Ангориан, захвачена ведьмой, Софи отправилась её спасать и в результате сама оказалась в плену. Хоул пришел ей на помощь и расправился с Болотной Ведьмой, попутно узнав, что мисс Ангориан на самом деле была огненным демоном. Этот падший небесный огонек долгие годы служил ведьме, и когда стер её личность и подчинил своей воле её тело, попытался забрать сердце Хоула, чтобы выжить. Хоул пытаясь остановить демона, потерпел неудачу: псевдо мисс Ангориан захватила Кальцифера и попыталась достать из него сердце Хоула. Софи, используя свой талант наделять предметы душой, разорвала договор между Хоулом и Кальцифером, не причинив вреда никому из них. Она неосознанно удерживала на себе заклятье старости, однако беспокойство за Хоула помогло ей избавиться от чар и вновь стать молодой девушкой. Очнувшись, Хоул уничтожил огненного демона ведьмы и тем самым снял заклятье с Кудесника Сэлимана и Принца Джастина, которых ведьма слила воедино, пытаясь создать идеального гомункула (голова Хоула должна была стать последней частью этого существа), который стал бы её марионеткой на троне Ингарии.
Софи и Хоул поняли, что любят друг друга (вслух этого не высказав), и Хоул предположил, что им придется теперь вместе влипать в истории, жить долго и счастливо и умереть в один день.