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