18岁的苏菲和继母以及妹妹居住在欧洲的一个小镇中,自从父亲死后,继母凡妮就把女儿们安排到原本由父亲经营的制帽小店营生,但是苏菲的妹妹却对这并不感兴趣,于是她很快离开了制帽店;而苏菲则坚持留了下来,因为这是父亲的最爱。
一次,苏菲在看望妹妹的路上,被两个士兵截住。这个时候一个神秘男子——哈尔出现了,他用魔法帮助苏菲解决了问题,并送她去妹妹处。途中哈尔和苏菲受到了荒野女巫的追捕。当晚,荒野女巫出现在了苏菲经营的制帽小店中,并对苏菲下了诅咒,把她变成了一个90岁的老太太,而苏菲还不能对任何人透露咒语内容。于是苏菲只能离家出走。途中她偶然遇见了神秘的稻草人芜菁,为了躲避大风,被引进了神秘的哈尔移动城堡。在那里,苏菲结识了驱使城堡移动的魔力来源——火焰恶魔卡西法,小男孩马鲁克,稻草人卡普以及男主人公哈尔。苏菲以清洁妇的名义住了下来,度过了一段平静美妙的日子。苏菲逐渐活出了自己,并不知不觉地被哈尔吸引。
城堡的主人魔法师哈尔拥有神奇的力量,但他并没有像这个国家所有的魔法师一样接受国王的号令参加战争,而是用自己的力量捍卫和平。哈尔常常在黄昏后才精疲力尽地回到自己的城堡,并也因此越来越深陷,将变成恶魔状态。直到有一天,哈尔对苏菲说出了自己厌恶战争的心声,苏菲决定帮助哈尔。在去王宫的路上,苏菲遇到了荒野女巫。原来这是个陷阱,宫廷女巫莎莉曼虽然是哈尔与荒野女巫的老师,但为了防止他们的心性被恶魔控制,收回了荒野女巫的的魔法,让她变成了一个普通的老婆婆,而哈尔也因为放心不下苏菲来到了王宫,当莎莉曼使出魔法要杀死卡西法收回哈尔的魔法时,苏菲冲了上来救了哈尔。
战争终于全面爆发,哈尔为了保护苏菲和大家,一人独自面对敌人。内心爱着哈尔的苏菲不忍让哈尔一人受难,决心与哈尔一同面对。于是,她驱使着移动城堡追寻哈尔的足迹。而此时的哈尔,已经渐渐失去了意识,变成了一只只会战斗保护苏菲的怪鸟。经过了这一连串事故后,偶然间苏菲通过戒指的指引发现了随意门并回到了哈尔的过去,并且了解到哈尔在童年时在流星结束生命的地方遇到了流星卡西法,而后者不愿就这样死去便与哈尔签定了契约,让火之恶魔卡西法的魔力为他所用,但是哈尔自己的心脏也将成为这个契约的交换品,将卡西法与哈尔的生命联系在一起。
故事的最后,苏菲拯救了奄奄一息的哈尔,破除了哈尔与卡西法之间的约定并且帮助哈尔找回了自己心脏,同时自己身上的诅咒也被解除,而稻草人卡普在苏菲的亲吻下也摆脱了复杂的诅咒——原来他就是邻国王子,并且答应回国后就停止战争。虽然摆脱了契约的束缚,卡西法仍然留恋和他们在一起的生活,于是在它的驱使下,会飞的移动城堡搭载着苏菲与哈尔一行,过上了和平而幸福的生活。