Однажды в городе Энске, на берегу реки, был найден мертвый почтальон и сумка с письмами. Тетя Даша каждый день читала своим соседям вслух по одному письму. Особенно запомнились Сане Григорьеву строки о дальних полярных экспедициях…
Саня живет в Энске с родителями и сестрой Сашей. По нелепой случайности Саниного отца обвиняют в убийстве и арестовывают. О настоящем убийце знает только маленький Саня, но из-за немоты, от которой лишь позже избавит его чудесный доктор Иван Иванович, он ничего не может сделать. Отец умирает в тюрьме, через какое-то время мать выходит замуж. Отчим оказывается жестоким и подлым человеком, который мучает и детей, и жену.
После смерти матери тетя Даша и сосед Сковородников решают отправить Саню с сестрой в приют. Тогда Саня и его друг Петя Сковородников бегут в Москву, а оттуда – в Туркестан. “Бороться и искать, найти и не сдаваться” – эта клятва поддерживает их в пути. Мальчики пешком добираются до Москвы, но Петькин дядя, на которого они рассчитывали, ушел на фронт. После трех месяцев почти бесплатной работы у спекулянтов им приходится скрываться от проверки. Петьке удается бежать, а Саня попадает сначала в распределитель для беспризорников, оттуда – в школу-коммуну.
Сане нравится в школе: он читает и лепит из глины, у него появляются новые друзья – Валька Жуков и Ромашка. Однажды Саня помогает донести сумку незнакомой старушке, которая живет в квартире заведующего школой Николая Антоновича Татаринова. Здесь же Саня встречает Катю, хорошенькую, но несколько склонную “задаваться” девочку с косичками и темными живыми глазами. Через некоторое время Саня вновь оказывается в знакомом доме Татариновых: его посылает туда за лактометром, прибором для проверки состава молока, Николай Антонович. Но лактометр взрывается. Катя собирается взять вину на себя, но гордый Саня не позволяет ей это сделать.
Квартира Татариновых становится для Сани “чем-то вроде пещеры Али-Бабы с ее сокровищами, загадками и опасностями”. Нина Капитоновна, которой Саня вовсю помогает по хозяйству и которая кормит его обедами, -“сокровище”; Марья Васильевна, “ни вдова, ни мужняя жена”, которая всегда ходит в черном платье и часто погружается в тоску, -“загадка”; а “опасность” – Николай Антонович, как выяснилось, двоюродный дядя Кати. Любимая тема рассказов Николая Антоновича – двоюродный брат, то есть муж Марьи Васильевны, о котором он “всю жизнь заботился” и который “оказался неблагодарным”. Николай Антонович уже давно влюблен в Марью Васильевну, но пока та “безжалостна” к нему, скорее ее симпатию вызывает иногда приходящий в гости учитель географии Кораблев. Хотя, когда Кораблев делает Марье Васильевне предложение, он получает отказ. В тот же день Николай Антонович собирает дома школьный совет, где Кораблев резко осуждается. Решено ограничить деятельность учителя географии – тогда он обидится и уйдет, Саня сообщает Кораблеву обо всем услышанном, но в результате Николай Антонович выгоняет Саню из дома. Обиженный Саня, заподозрив Кораблева в предательстве, покидает коммуну. Пробродив по Москве целый день, он совершенно разболевается и попадает в больницу, где его вновь спасает доктор Иван Иванович.
Прошло четыре года – Сане семнадцать лет. В школе идет представление инсценированного “суда над Евгением Онегиным”, именно здесь Саня вновь встречает Катю и раскрывает ей свою тайну: уже давно он готовится стать летчиком. Саня наконец узнает от Кати историю капитана Татаринова. В июне двенадцатого года он, заехав в Энск попрощаться с семьей, вышел на шхуне “Св. Мария” из Петербурга во Владивосток. Экспедиция не вернулась. Мария Васильевна безрезультатно посылала прошение о помощи царю: считалось, что если Татаринов погиб, то по собственной вине: он “небрежно обращался с казенным имуществом”. Семья капитана переехала к Николаю Антоновичу. Саня часто встречается с Катей: они вместе ходят на каток, в зоопарк, где Саня вдруг сталкивается со своим отчимом. На школьном балу Саня и Катя остаются наедине, но их разговору мешает Ромашка, который затем обо всем докладывает Николаю Антоновичу. Саню больше не принимают у Татариновых, а Катю отправляют к тетке в Энск. Саня избивает Ромашку, оказывается, и в истории с Кораблевым именно он сыграл роковую роль. И все же Саня раскаивается в своем поступке – с тяжелым чувством он уезжает в Энск.
В родном городе Саня находит и тетю Дашу, и старика Сковородникова, и сестру Сашу, он узнает, что Петька тоже живет в Москве и собирается стать художником. Еще раз Саня перечитывает старые письма – и вдруг понимает, что они впрямую относятся к экспедиции капитана Татаринова! С волнением Саня узнает, что не кто иной, как Иван Львович Татаринов, открыл Северную землю и назвал ее в честь своей жены Марьи Васильевны, что именно по вине Николая Антоновича, этого “страшного человека”, большая часть снаряжения оказалась негодной. Строки, в которых прямо названо имя Николая, размыты водой и сохранились лишь в памяти Сани, но Катя верит ему.
Саня твердо и решительно обличает Николая Антоновича перед Марьей Васильевной и даже требует, чтобы именно она “предъявила обвинение”. Только потом Саня понимает, что этот разговор окончательно сразил Марью Васильевну, убедил ее в решении покончить с собой, ведь Николай Антонович к тому времени уже был ее мужем… Врачам не удается спасти Марью Васильевну: она умирает. На похоронах Саня подходит к Кате, но та отворачивается от него. Николаю Антоновичу удалось убедить всех в том, что речь в письме шла совсем не о нем, а о каком-то “фон Вышимирском” и что Саня виновен в смерти Марьи Васильевны. Сане остается только усиленно готовиться к поступлению в летную школу, чтобы когда-нибудь найти экспедицию капитана Татаринова и доказать свою правоту. Последний раз увидевшись с Катей, он уезжает учиться в Ленинград. Он занимается в летной школе и одновременно работает на заводе в Ленинграде; в Академии художеств учатся и сестра Саша, и ее муж Петя Сковородников. Наконец Саня добивается назначения на Север. В городе Заполярье он встречается с доктором Иваном Ивановичем, тот показывает ему дневники штурмана “Св. Марии” Ивана Климова, умершего в 1914 году в Архангельске. Терпеливо расшифровывая записи, Саня узнает о том, что капитан Татаринов, отправив людей на поиски земли, сам остался на корабле. Штурман описывает тяготы похода, с восхищением и уважением отзывается о своем капитане. Саня понимает, что следы экспедиции нужно искать именно на Земле Марии.
От Вали Жукова Саня узнает о некоторых московских новостях: Ромашка стал “самым близким человеком” в доме Татариновых и, кажется, “собирается жениться на Кате”. Саня постоянно думает о Кате – он решает поехать в Москву. А пока они с доктором получают задание лететь в глухое становище Ванокан, но попадают в пургу. Благодаря вынужденной посадке Саня находит багор со шхуны “Св. Мария”. Постепенно из “осколков” истории капитана составляется стройная картина.
В Москве Саня планирует выступить с докладом об экспедиции. Но сначала выясняется, что Николай Антонович уже отчасти опередил его, напечатав статью об открытии капитана Татаринова, а затем тот же Николай Антонович со своим помощником Ромашкой публикуют в “Правде” клевету на Саню и тем самым добиваются отмены доклада. Иван Павлович Кораблев во многом помогает Сане и Кате. При его содействии в отношениях между молодыми людьми исчезает недоверие: Саня понимает, что Кате пытаются навязать брак с Ромашкой. Катя покидает дом Татариновых. Теперь она геолог, начальник экспедиции.
Ничтожный, но теперь несколько “остепенившийся” Ромашка ведет двойную игру: он предлагает Сане доказательства вины Николая Антоновича, если тот откажется от Кати. Саня ставит об этом в известность Николая Антоновича, но тот уже не в силах противостоять ловкому “ассистенту”. С помощью Героя Советского Союза летчика Ч. Саня все же получает разрешение на экспедицию, в “Правде” печатают его статью с выдержками из дневника штурмана. А пока он возвращается на Север.
Экспедицию вновь пытаются отменить, но Катя проявляет решительность – и вот весной они с Саней должны встретиться в Ленинграде, чтобы готовиться к поискам. Влюбленные счастливы – белыми ночами они гуляют по городу, все время занимаются подготовкой к экспедиции. Саша, Санина сестра, родила сына, но внезапно ее состояние резко ухудшается – и она умирает. Экспедиция по непонятной причине отменяется – Сане дают совсем другое назначение.
Проходит пять лет. Саня и Катя, теперь Татаринова-Григорьева, живут то на Дальнем Востоке, то в Крыму, то в Москве. В конце концов они поселяются в Ленинграде вместе с Петей, его сыном и Катиной бабушкой. Саня участвует в войне в Испании, а затем отбывает на фронт. Однажды Катя вновь встречает Ромашку, и тот рассказывает ей о том, как он, спасая раненого Саню, пытался выбраться из окружения немцев и как Саня пропал. Катя не хочет верить Ромашке, в это трудное время она не теряет надежды. И действительно Ромашка врет: на самом деле он не спас, а бросил тяжелораненого Саню, отобрав у него оружие и документы. Сане удается выбраться: он лечится в госпитале, а оттуда отправляется в Ленинград на поиски Кати.
В Ленинграде Кати нет, зато Саню приглашают лететь на Север, где уже тоже идут сражения. Саня, так и не найдя Катю ни в Москве, где он просто разминулся с ней, ни в Ярославле, думает, что она в Новосибирске. Во время успешного выполнения одного из боевых заданий экипаж Григорьева совершает вынужденную посадку недалеко от того места, где, по мнению Сани, нужно искать следы экспедиции капитана Татаринова. Саня находит тело капитана, а также его прощальные письма и отчеты. А вернувшись в Полярный, у доктора Павлова Саня находит и Катю.
Летом 1944 г. Саня и Катя проводят отпуск в Москве, где видятся со всеми друзьями. Сане нужно выполнить два дела: он дает показания по делу осужденного Ромашова, а в Географическом обществе с большим успехом проходит его доклад об экспедиции, об открытиях капитана Татаринова, о том, из-за кого эта экспедиция погибла. Николай Антонович с позором изгоняется из зала. В Энске семья вновь собирается за столом. Старик Сковородников в своей речи объединяет Татаринова и Саню: “такие капитаны двигают вперед человечество и науку”.