Главная героиня сказки — двенадцатилетняя девочка Марихен Штальбаум. На Рождество она в подарок от своего крестного Дроссельмейера получает куклу для раскалывания орехов — Щелкунчика, который ночью оживает и вступает в схватку с предводителем мышиной армии (нем. Mausekönig). Исход битвы решает брошенная Мари туфелька. Наутро родители не верят рассказам своей дочери, однако Дроссельмейер рассказывает историю Щелкунчика — нюрнбергского племянника Дроссельмейера, заколдованного мышиной королевой Мышильдой. На следующую ночь Мари откупается от Мышиного Короля марципанами, а на третью ночь вдохновленный Щелкунчик (Дроссельмейер) убивает саблей Мышиного Короля. Затем Щелкунчик ведет Мари в Кукольное Королевство. В кукольном королевстве был Рождественский лес, Леденцовый луг, Лимонадная река и озеро Миндального молока. Столицей был город Конфетенбург с Марципановым замком. Мари становится принцессой.
24 декабря, дом советника медицины Штальбаума. Все готовятся к Рождеству, а дети — Фриц и Мари — строят догадки, что же на этот раз им преподнесет в подарок выдумщик и искусник крестный, старший советник суда Дроссельмейер, часто чинивший часы в доме Штальбаумов. Мари мечтала про сад и озеро с лебедями, а Фриц заявил, что ему больше нравятся подарки родителей, которыми можно играть (игрушки крестного обычно держали подальше от детей, чтобы те не сломали), а сделать целый сад крестному не под силу.
Вечером детей впустили к красавице-елке, возле и на которой были подарки: новые куклы, платья, гусары и пр. Крестный сделал чудесный замок, однако танцующие в нем кукли выполняли одни и те же движения, да и внутрь замка нельзя было попасть, поэтому чудо техники быстро надоело детям — только мать заинтересовалась сложным механизмом. Когда все подарки разобрали, Мари увидела Щелкунчика.
Уродливая внешне кукла показалась девочке очень милой. Фриц быстро выломал Щелкунчику пару зубов, пытаясь расколоть твердые орехи, и игрушку стала опекать Мари. На ночь дети убрали игрушки в стеклянный шкаф. Мари задержалась у шкафа, размещая своего подопечного со всеми удобствами, и стала участницей битвы мышиного семиголового короля и армии кукол под предводительством Щелкунчика. Кукли сдались под натиском мышей, и когда мышиный король уже подобрался к Щелкунчику, Мари бросила в него своей туфелькой…
Очнулась девочка в кровати с локтем, порезанным разбитым стеклом шкафа. Никто не поверил ее рассказу о ночном происшествии.
Крестный принес отремонтированного Щелкунчика и рассказал сказу о твердом орехе: у короля и королевы родилась прекрасная принцесса Пирлипат, но королева Мышильда, мстя за родственников, убитых мышеловками придворного часовщика Дроссельмейера (они сожрали сало, предназначенное для королевских колбас), превратила красавицу в уродца. Успокоить ее теперь могло только щелканье орехов. Дроссельмейер под страхом смертной казни с помощью придворного звездочета вычислил гороскоп принцессы — вернуть красоту ей поможет орех Кракатук, расколотый юношей особенным методом. Король отправил Дроссельмейера и звездочета на поиски спасения; и орех, и юноша (племянник часовщика) были найдены у брата Дроссельмейера в его родном городе. Много принцев сломали зубы о Кракатук, и когда король пообещал выдать дочь замуж за спасителя, вперед вышел племянник. Он расколол орех и принцесса, сьев его, стала красавицей, но юноша не смог выполнить весь обряд, потому что Мышильда бросилась ему под ноги… Мышь погибла, но парень превратился в Щелкунчика. Король выгнал Дроссельмайера, его племянника и звездочета. Однако последний предсказал, что Щелкунчик будет принцем и уродство исчезнет, если он победит мышиного короля и его полюбит прекрасная девушка. Через неделю Мари выздоровела и стала укорять Дроссельмейера в том, что он не помог Щелкунчику. Тот ответил, что лишь она может помочь, потому что правит светлым царством. Мышиный король повадился вымогать у Мари ее сласти взамен за безопасность Щелкунчика. Родители встревожились тем, что завелись мыши. Когда он потребовал ее книжки и платья, она взяла на руки Щелкунчика и зарыдала — она готова отдать все, но когда ничего не останется, мышиный король захочет загрызть ее саму. Щелкунчик ожил и обещал позаботиться обо всем, если добудет саблю — с этим помог Фриц, недавно отправивший в отставку полковника (и наказавший гусар для трусость во время боя). Ночью Щелкунчик пришел к Мари с окровавленной саблей, свечой и 7 золотыми коронами. Отдам трофеи девочке, он повел ее в свое царство — Страну Сказок, куда попали через отцовскую лисью шубу. Помогая сестрам Щелкунчика по хозяйству, предложив растолочь в золотой ступке карамель, Мари вдруг проснулась в своей кровати. Конечно, никто из взрослых не поверил ее рассказу. Про короны Дроссельмайер сказал, что это его подарок Мари на ее двухлетие и отказался признать Щелкунчика своим племянником (игрушка стояла на своем месте в шкафу). Папа пригрозил выбросить всех кукол, и Мари не смела заикаться про свою историю. Но однажды на пороге их дома появился племянник Дроссельмайера, который наедине признался Мари, что перестал быть Щелкунчиком, и сделал предложение разделить с ним корону и трон Марципанового замка. Говорят, она и поныне там королева.