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