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