Старшеклассница Катя Шевченко переезжает в новый район и в школе знакомится с одноклассником Романом Лавочкиным, постепенно их дружба перерастает в любовь, удивительную по своей силе для взрослых, которые их окружают. Мать Кати когда-то в юности была возлюбленной отца Романа, и теперь мать мальчика панически боится, что муж уйдет от нее к бывшей любимой. Она стремится всеми силами разлучить детей — переводит Романа в другую школу, запрещает им встречаться, но любовь Кати и Ромы от этого не прекращается. Тогда мать обманывает сына, вынуждая его на долгое время уехать из Москвы в Ленинград ухаживать за якобы больной бабушкой, которая, в свою очередь, пресекает все попытки Кати дозвониться до Ромы или написать ему. Катю и Романа поддерживают только одноклассники и классная руководительница Татьяна Николаевна, у которой тоже все очень печально в личной жизни. Она и раскрывает в итоге обман матери Романа и сообщает правду Катиной матери и ее мужу. Отец Романа, который тоже не был в курсе обмана, дает Кате деньги на поездку в Ленинград. А тем временем Рома, который не может понять, почему Катя не отвечает ни на одно из его писем (не зная при этом, что все письма Кати перехватывает почтальон, которая знакомая его бабушки), звонит Татьяне Николаевне, но та по ошибке принимает его за надоевшего ей ухажера Михаила и, не дав мальчику сказать и слова, велит ему сюда никогда больше не звонить. Мучаясь от неизвестности, Рома случайно подслушивает разговор бабушки с матерью и узнает правду: бабушка вовсе не больна и все это на самом деле спектакль, разыгранный для того, чтобы Рома больше не виделся с Катей. Рассердившись, Рома запирается в своей комнате, а бабушка пытается до него достучаться. В какой-то момент Рома видит из окна, как во двор входит Катя, которая отправилась в Ленинград. Рома хочет выйти из комнаты, но на этот раз его не выпускает уже бабушка, которая пытается ему объяснить, что семья Кати — «порочная» и что они хотят его спасти от них, но Рома не слушает. Он распахивает окно, встает на подоконник, но тут бабушке наконец удается вышибить дверь. Рома оборачивается, оступается и, сломав раму, падает вниз. Его падение смягчает снежный сугроб. Катя, увидев это, подбегает к нему и пытается помочь подняться, но в конечном итоге они вместе падают обратно на снег и, обнявшись, медленно отходят от произошедшего. Таким образом, конец у повести остается открытый.