Действие первое
Особняк куртизанки Стефании в Петербурге. С улицы доносится пение солдат. Старая нянька Никона и камердинер Иван до утра прождали госпожу. Приходит Глебов, сутенёр Стефании, и в ярости обнаруживает, что её до сих пор нет дома. Тем временем появляются князь Алексей и другие богатые поклонники Стефании. Чтобы отвлечь их и скрыть её отсутствие, Глебов подаёт идею исполнить под звон шпаг утреннюю серенаду, а затем затевает игру в карты. Стефания возвращается с тайного свидания с молодым офицером Василием, которому она выдаёт себя за бедную вышивальщицу. Но Василий, оказывается, крестник Никоны; перед тем, как отправиться на войну, он приходит навестить крёстную… и неожиданно встречает свою «бедную» возлюбленную. Между Василием и князем Алексеем вспыхивает ссора, Василий ранит князя. Подоспевшие полицейские арестовывают Василия.
Действие второе
Пересыльный пункт в Сибири. Офицеры и торговцы ждут прибытия колонны каторжников. Наконец колонна приходит, среди каторжников -Василий. Появляется Стефания, разыскивающая своего возлюбленного. Дальше они пойдут вместе. В сибирском остроге Стефанию находит Глебов, который тоже попал на каторгу. Он предлагает ей бежать с ним, но она отказывается. Глебов затевает ссору с Василием и рассказывает ему о прошлом Стефании. Потрясённый Василий прощает Стефанию.
Начинается пасхальный праздник. Колокольный звон. Пока в казарме идёт праздничный спектакль, Стефания и Василий пытаются бежать путём, о котором говорил Глебов. Их побег обнаружен. Смертельно раненная Стефания умирает на руках у Василия, благословляя Сибирь, где она ценой страданий искупила прошлое и обрела любовь и новую жизнь.