В марте 1966 года инженер Константин Платонович Зорин, выходец из деревни, вспоминает о том, как в городе его унижали бюрократы и как ранее он испытывал отвращение ко всему деревенскому. Сейчас же его тянет обратно в родные места, поэтому он приехал в отпуск на двадцать четыре дня и желает ежедневно топить баню. Однако старая баня требует ремонта, и, несмотря на приобретённые в школе ФЗО плотницкие навыки, Зорин не в состоянии справиться с восстановлением в одиночку, поэтому обращается за помощью к соседу-старику Олеше Смолину. Тот не спешит приступить к работе, а вместо этого начинает рассказывать о своём детстве.

Олеша родился в телячьем хлеву в день Рождества. Поп, не веривший в его безгрешность, наказывал его, и тогда Олеша решил сознательно согрешить — украл табак у отца и начал курить, после чего сразу раскаялся. С тех пор, когда он стал грешить, жизнь показалась ему проще, и наказания прекратились, но в его жизни начались различные сложности.

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

Смолин начинает рассказывать, что он и Авинер ровесники. В детстве они лепили глиняных птичек и соревновались, кто дальше запустит. Однажды Авинер, тогда ещё Виня, набрал глины и бросил её в окно Федуленка, разбив стекло. Все разбежались, а Виня остался, крича, что остальные убежали. Федуленок бросился за ними и настиг Олешу, но тот был спасён от побоев отцом.

В двенадцать лет Винька и Олеша окончили приходскую школу. Виня оставил на гумне ворота, исписанные ругательствами, а от работы старался увильнуть, даже портил плуг, чтобы не пахать. Когда его отца наказывали за неуплату налогов, Виня наблюдал и хвастался этим. Позже Олеша уехал в Петербург, где мастера-плотники строго его обучали ремеслу.

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

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

Далее Олеша вспоминает свою любовь к Таньке, дочери Федуленка, у которой была длинная густая коса и выразительные глаза, менявшие цвет с синего на чёрный. Олеша был робок, и однажды, после праздника Успенья, когда пьяные мужчины спали неподалёку, он попытался проситься под полог, где собирались спать Танька и его двоюродная сестра. Та, догадавшись, ушла в избу, а Танька стала уговаривать Олешу уйти. Позже Олеша услышал, как Винька целует Таньку под пологом, и двоюродная высмеяла его, сообщив, что Танька просила найти его, но он был неуловим.

Олеша завершает рассказ. Мимо проезжает грузовик, водитель которого оскорбляет Смолина, но Олеша лишь восхищается водителем, отмечая, что тот явно чужак. Зорин, раздражённый как водителем, так и беззлобным отношением Смолина, уходит, не попрощавшись.

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

Отпуск Зорина подходит к концу. Олеша работает добросовестно, но медленно, и рассказывает о трудовых повинностях, когда их направляли на строительство дорог, лесозаготовки, сплав, а также на посев хлеба в колхозе, который всегда задерживался. Вспоминает момент, когда описывали имущество Федуленка, дом которого ушёл с молотка, а семью сослали. При прощании Танька подошла к Олеше и заплакала. Их увезли в Печору, откуда сначала приходили письма, а потом связь прервалась. Винька Козонков обвинял Олешу в кулацкой агитации, из-за чего того сильно мучили. Олеша не решается раскрыть Зорину все подробности, поскольку тот «партейный».

Баня оказывается готовой. Зорин хочет рассчитаться с Олешей, но тот не реагирует. Позже они вместе парятся, Зорин включает транзистор, и они слушают «Прекрасную мельничиху» Шуберта. В конце Зорин дарит транзистор Олеше.

Перед отъездом к Зорину приходят Олеша и Авинер. За выпивкой они спорят о коллективизации. Олеша утверждает, что в деревне было не три класса, а тридцать три, и вспоминает, как Кузю Перьева записали в кулаки, хотя у того не было даже коров, лишь за то, что он обматерил Табакова. Авинер же считает, что Смолина следовало бы вместе с Федуленком «под корень» уничтожить, называя его контрой. Спор доходит до драки: Авинер бьёт голову Олеши о стену, после чего жена Олеши, Настасья, уводит его домой, а Авинер уходит, предупреждая, что за дисциплину он не пожалеет даже брата.

У Зорина начинается грипп. Он засыпает, а затем, пошатываясь, идёт к Смолину, где находит мирно беседующих Олешу и Авинера. Смолин говорит, что они оба уйдут в одну землю, и просит Авинера сделать гроб для Олеши с должным уважением, если тот умрёт первым. Козонков просит того же для себя. Затем оба, склоняя седеющие головы, тихо исполняют старинную протяжную песню. Зорин не может присоединиться, так как не знает слов.