Старик рыбачит в море один. За восемьдесят четыре дня он ещё не поймал ни одной рыбы. В первые сорок дней с ним рыбачил мальчик. Затем родители отправили его работать на другую, более «везучую» лодку. Старик выглядит худым, измождённым и очень старым. Молоды у него только глаза – глаза цвета моря.
Мальчик, поймавший на другой лодке несколько рыбин, предлагает Сантьяго (старику) вновь отправиться с ним в море. Старик против того, чтобы ребёнок уходил с удачливой лодки.
Мальчик угощает старика пивом на Террасе. Они вспоминают, как Сантьяго в первый раз взял ребёнка в море и спас от большой рыбы. После пива мальчик помогает старику отнести рыболовные снасти в хижину. Сантьяго засыпает на стуле за чтением газеты. Мальчик приносит ему ужин. Друзья кушают и обсуждают бейсбол. Ночью старику снится Африка, в которую он плавал будучи юнгой, и выходящие на берег львы.
Утром старик будит мальчика (его зовут Манолин), они пьют кофе и отправляются в море каждый на своей лодке. Старик отплываёт далеко от берега. Он жалеет морских ласточек, которые с большим трудом добывают себе пропитание; размышляя о море, старик употребляет для его словесного обозначения женский род, видя в нём женщину. До восхода солнца Сантьяго успевает опустить приманку в воду. В отличие от других рыбаков он делает это точно, но ему почему-то постоянно не везёт.
Солнце встаёт над морем. Старик наблюдает в воде стаи золотой макрели, летучую рыбу, планктон, ядовитых физалий, вспоминает о черепахах, которые их едят. Следя за птицей-фрегатом, рыбак наталкивается на стаю тунцов. Когда берег теряется из виду, крупная рыба начинает клевать. Он уговаривает её поесть, разговаривает сам с собой. Когда рыба плотно насаживается на крючок, старику не хватает сил вытащить её из воды. Добыча уходит в море, увлекая за собой лодку. Сантьяго ждёт, когда рыба умрёт. Они плывут полдня и всю ночь.
Старик думает о рыбе, жалеет её и вспоминает, как поймал самку марлина, чей самец был со своей подругой до самой смерти. Сантьяго освобождает свою лодку от лишних лесок и начинает молиться о том, чтобы рыба показалась на поверхности. Утром на бечёвку, тянущуюся от рыбе к лодки, садится маленькая птичка. Старик разговаривает с ней. Рыба дёргает леску, и ранит рабочую, правую руку Сантьяго. На завтрак старик ест тунца, пытаясь придать силы затёкшей левой руке.
Когда рыба выходит из воды, старик видит тёмно-фиолетовое с нежно сиреневыми полосами по бокам туловище, длиной на два фута больше его лодки. Вместо носа у добычи – длинный, как бейсбольная клюшка, и острый, как рапира, меч.
Не верящий в Бога старик десять раз читает «Отче наш» и «Богородицу», прося их о помощи. Он переживает, что на них с рыбой могут напасть акулы и вспоминает, как боролся силой с негром – самым сильным человеком в порту и победил его. День подходит к концу. Ночью Сантьяго ловит макрель, потрошит её, ужинает. Ночью он спит и просыпается от резкого рывка рыбы. Утром добыча начинает кружить вокруг лодки. Старик тщетно пытается убить рыбу. Его мысли начинают путаться. Когда рыба устаёт бороться, Сантьяго, собрав остатки сил, убивает её ударом гарпуна в сердце.
Мёртвую рыбу Сантьяго привязывает к лодке. Из жёлтых водорослей он добывает креветок и ест их. Ему начинает казаться, что пойманная рыба ему приснилась. В какой-то момент старика с рыбой настигает акула. Старик убивает её, всадив гарпун в голову. Мёртвая акула уносит с собой на дно сорок фунтов рыбы, гарпун и остаток верёвок.
Пытаясь себя приободрить, Сантьяго начинает думать и говорить сам с собой. Мысли его крутятся вокруг грехов. Он спрашивает себя, не грешно ли было убивать рыбу, и понимает, что нет – не грешно, ведь он родился рыбаком, точно так же, как рыба родилась рыбой. Старик думает о том, что убил ради пропитания. Затем он приходит к мысли, что, убивая большую рыбу, он испытывал гордость, а гордость – грех. Акулу он уже убивал с наслаждением, но в этом случае он боролся за свою жизнь.
Через некоторое время лодку настигают ещё две акулы, широконосые, питающиеся падалью. Старик убивает их нанизанным на весло ножом. Эти акулы уносят с собой четверть рыбы, причём самое лучшее её мясо. Старик извиняется перед рыбой.
Следующая акула ломает нож Сантьяго. С подплывшими на закате хищницами старик пытается сражаться дубинкой. От рыбы остаётся половина. Старику тяжело на неё смотреть.
В десять часов вечера Сантьяго видит огни Гаваны. Ночью на него нападает целая стая акул. Они сжирают остатки рыбы. Доплыв до родного посёлка старик отправляется спать. Утром мальчик навещает его в хижине. Рыбаки на берегу измеряют рыбий скелет. Мальчик приносит старику кофе и говорит, что отныне будет рыбачить с ним вместе.