Цыганский табор кочует по степям Бессарабии. У костра цыганская семья готовит ужин, невдалеке пасутся кони, а за шатром лежит ручной медведь. Постепенно все умолкает и погружается в сон. Лишь в одном шатре не спит старик, ждущий свою дочь Земфиру, ушедшую гулять в поле. И вот появляется Земфира вместе с незнакомым старику юношей. Земфира объясняет, что встретила его за курганом и пригласила в табор, что его преследует закон и он хочет быть цыганом. Зовут его Алеко. Старик радушно приглашает юношу остаться так долго, как он захочет, и говорит, что готов делить с ним хлеб и кров.

Утром старик будит Земфиру и Алеко, табор просыпается и отправляется в путь живописной толпой. Сердце юноши сжимается от тоски при виде опустевшей равнины. Но о чем он тоскует? Земфира хочет узнать это. Между ними завязывается разговор. Земфира опасается, что он жалеет об оставленной им жизни, но Алеко успокаивает ее и говорит, что без сожаления оставил «неволю душных городов». В той жизни, что он бросил, нет любви, а значит, нет веселья, и теперь его желанье — всегда быть с Земфирой. Старик, слыша их разговор, рассказывает им старинное преданье о поэте, который когда-то был сослан царем в эти края и томился душой по родине, несмотря на любовь и заботу местных жителей. Алеко узнает в герое этого преданья Овидия и поражается превратности судьбы и эфемерности славы.

Два года кочует Алеко вместе с табором, вольный, как сами цыганы, не сожалея о покинутом. Он водит по деревням медведя и тем зарабатывает на хлеб. Ничто не смущает покоя его души, но однажды он слышит, как Земфира поет песню, которая приводит его в смятение. В этой песне Земфира признается, что разлюбила его. Алеко просит ее перестать петь, но Земфира продолжает, и тогда Алеко понимает, что Земфира неверна ему. Земфира подтверждает самые страшные предположения Алеко.
Ночью Земфира будит отца и говорит, что Алеко рыдает и стонет во сне, зовет ее, но его любовь постыла Земфире, ее сердце просит воли. Просыпается Алеко, и Земфира уходит к нему. Алеко хочет знать, где была Земфира. Она отвечает, что сидела с отцом, потому что не могла перенести вида душевных мучений Алеко, которые он испытывал во сне. Алеко признается, что видел во сне измену Земфиры, но Земфира уговаривает его не верить лукавым сновидениям.

Старый цыган просит Алеко не печалиться и уверяет, что тоска погубит его. Алеко признается, что причина его печали — равнодушие к нему Земфиры. Старик утешает Алеко, говорит, что Земфира — дитя, что женское сердце любят шутя, что никто не волен приказать сердцу женщины любить одного, как приказать луне застыть на месте. Но Алеко, вспоминая часы любви, проведенные с Земфирой, безутешен. Он сокрушается, что «Земфира охладела», что «Земфира неверна». В назидание старик рассказывает Алеко о самом себе, о том, как был молод, как любил прекрасную Мариулу и как наконец добился взаимности. Но быстро миновала молодость, еще быстрее — любовь Мариулы. Однажды она ушла вместе с другим табором, бросив маленькую дочь, эту самую Земфиру. И с тех пор «все девы мира» постыли старику. Алеко спрашивает, как смог старик не отомстить обидчикам, как мог не вонзить кинжала в сердце похитителя и неверной жены. Старик отвечает, что ничто не в силах удержать любовь, ничто нельзя вернуть, «что было, то не будет вновь». Алеко уверяет старика, что сам он не такой, что он не может отказаться от своих прав или хоть насладиться мщением.



А в это время Земфира на свидании с молодым цыганом. Они условливаются о новом свидании нынешней ночью после захода луны.

Алеко тревожно спит и, пробудившись, не находит рядом Земфиры. Он встает, выходит из шатра, его объемлет подозренье и страх, он бродит вокруг шатра и видит едва приметный в звездном свете след, ведущий за курганы, и Алеко отправляется по этому следу. Внезапно он видит две тени и слышит голоса двух влюбленных, которые не могут расстаться друг с другом. Он узнает Земфиру, которая просит своего возлюбленного бежать, но Алеко вонзает в него нож… В ужасе Земфира говорит, что презирает угрозы Алеко, и проклинает его. Алеко убивает и ее.

Рассвет застал Алеко сидящим за холмом с окровавленным ножом в руке. Перед ним два трупа. Соплеменники прощаются с убитыми и роют для них могилы. В задумчивости сидит старый цыган. После того как тела влюбленных были преданы земле, он подходит к Алеко и говорит: «Оставь нас, гордый человек!» Он говорит, что цыганы не хотят жить рядом с убийцей, с человеком, который «для себя лишь» хочет воли.
Старик промолвил это, и табор скоро снялся с места и скрылся в степной дали. Лишь одна телега осталась в роковом поле. Настала ночь, но никто не разложил пред ней огня и никто не переночевал под ее крышей.