Жили-были в одном селе старик со старухой. И было у них две дочери. Старикова – Настенька, старухина – Марфушенька. Старуха свою дочь любила и жалела, а на старика с Настенькой всё время ругалась и заставляла падчерицу делать всю самую грязную и тяжёлую работу.
В это же время в другой деревне жил добрый молодец Иван – вдовий сын. Он был красивый, сильный и умелый, только очень самовлюблённый. Однажды Иван ушёл из родного дома мир посмотреть да себя показать. И попался ему на пути Старичок-Боровичок, который подарил Ивану волшебный лук со стрелами. Но Иван не только не поблагодарил Старичка-Боровичка, но даже нагрубил ему, а тот, обидевшись, наслал на Ивана страшное заклятие.
Вскоре после этого Иван у реки встретился с Настей и влюбился в неё, но в это время колдовство начало действовать, и юноша превратился в оборотня – получеловека-полумедведя. Подумав, что злые чары на него наложила девушка, Иван осыпал её проклятиями и скрылся в лесу, где опять повстречал Старичка-Боровичка, объяснившего, что медвежий облик он получил в наказание за свою грубость и невоспитанность. Избавиться же от заклятья ему возможно, лишь делая людям добро – бескорыстно и от чистого сердца.
Марфушенька, дочь старухи, была противоположностью Настеньки: она целыми днями лежала, ела и ныла. Однажды к ним приехали сваты. Старуха свою доченьку нарядила, украсила, а падчерицу сажей измазала, чтобы на неё никто не обратил внимания. Сваты попросили будущую невестку проявить себя и приготовить им гуся, чтобы они могли посмотреть, насколько она хозяйственная. Марфушенька погналась за птицей, но упала в лужу, и над ней все смеялись. Жених сразу же отказался от такой невесты. Старуха приказала Настеньке помочь сестре, и, когда она доставала Марфушеньку из лужи, сажа с её лица смылась, все увидели, какая она красавица. Жених сделал ей предложение, но старуха отказала и с тех пор затаила на падчерицу ещё большую злость.
Наступила зима. Злая мачеха задумала погубить Настеньку. Она заставила старика отвезти дочь в лес и бросить там умирать от холода. Но девушка не успела замерзнуть – на неё набрёл повелитель зимы. Морозко сначала испытывал Настеньку, насылая на неё холод, но затем сжалился, укутал своей шубой, отогрел и отвёз в свой ледяной дворец.
Тем временем Ивану удалось вернуть своё человеческое обличье, и тотчас он отправился на поиски своей возлюбленной, которую незаслуженно обидел. Ему помогла Баба-Яга, дав тёплую одежду и путеводные сани, но следом она отправила чёрного кота, чтобы он погубил Настеньку. Кот прибежал в ледяной дворец и Настенька, пытаясь его погладить, дотронулась до морозильного посоха, который забыл Морозко, и замёрзла. Такой её нашёл Иван и попросил прощения за обиду, после чего Настенька ожила.
Морозко отпустил девушку домой, нарядив её и дав лошадей с сундуком драгоценностей. Когда старуха увидела подарки, то позавидовала и решила свою дочь тоже отправить в лес. Одела её потеплее и наказ дала, что просить у волшебника. Но Марфуша только обидела Морозко, за это он «наградил» её сундуком с воронами и вернул домой на тройке свиней.
Тут и старик решил проявить характер и поставил старуху на место. Иван и Настенька сыграли свадьбу. Мачеха и Марфушка, подобрев, обещают исправиться. Настя их прощает и верит, что они никогда её больше обижать не будут.