84 дня старый рыбак Сантьяго безуспешно выходит в море на рыбалку. И если первые 40 дней он рыбачил с маленьким мальчиком Манолином, то вскоре остался без помощника, так как родители мальчика посчитали, что от старика отвернулась удача и отправили сына в море с более успешным рыболовом. Старик был стар, худ и изможден, а вот глаза цвета моря, были молодыми и веселыми. Глаза человека, который никогда не сдается.
Манолину тяжело было встречать каждый вечер Сантьяго, вернувшегося из моря без улова. Но он очень любил и уважал старика, который научил его рыбачить. И потому, каждый вечер мальчик помогал усталому старому рыбаку относить домой снасти.
Перед тем как идти в хижину старика, Сантьяго и Манолин сидели в рыбацком кафе, где Манолин покупал старику пиво. В кафе в это время собирались все рыбаки поселка и обсуждали улов. Мальчик вызвался принести старику наживку для следующей рыбалки. Сантьяго не терял надежды на удачный улов. Он говорит мальчику, что планирует завтра уйти подальше в море. Мальчику хочется пойти на рыбалку со стариком, но Сантьяго уверяет его, что он и сам со всем справится, а Манолин должен и дальше рыбачить на «счастливой» лодке. Они несут снасти домой, но не потому, что старик боится, что их украдут, а просто, чтобы они не отсырели вблизи воды.
Хижина старика, обстановка которой состояла из кровати, стола и стула, была построена из королевской пальмы. Стены были украшены олеографиями. Раньше на стене висела еще цветная фотография покойной жены старика, но Сантьяго снял ее, так как глядя на нее, очень тосковал по жене.
Каждый вечер мальчик спрашивал старика об ужине и предлагал развести огонь в очаге, еще он просил сеть, чтобы наловить сардин на наживку. Это было своеобразным ритуалом. Манолин знал, что у старика нет еды и сеть давно продана. Мальчик уходит за сардинами, а старик остается читать вчерашнюю газету, которую ему дали в винной лавке. Мальчик просит его почитать о бейсбольном матче и пересказать потом ему. Когда мальчик возвращается, он видит спящего на стуле Сантьяго. Манолин заботливо укрывает старого рыбака одеялом. Манолин замечает, что несмотря на худобу, у Сантьяго сильные и могучие плечи, и еще он обращает внимание на старую рубаху старика, всю в разноцветных заплатах, как и старый парус. Мальчик опять уходит, не разбудив старика. Возвращается Манолин с ужином для старика. Сантьяго есть тушеную говядину, черные бобы с рисом и жареные бананы, которые мальчик взял в ресторане. Манолин говорит старику, что нельзя голодным ловить рыбу. Сантьяго обещает, что отблагодарит хозяина ресторана, который часто их выручает, отдав ему самую лучшую часть рыбы, которую надеется поймать завтра. Старик и мальчик обсуждают бейсбол и знаменитых игроков. Один из них даже приходил в их рыбацкий ресторан, но мальчик и старый рыбак постеснялись пригласить его порыбачить с ними и теперь жалеют об этом. Мальчик прощается со стариком и просит его разбудить его утром на рыбалку, так как Манолин не любит, когда его будит другой рыбак, с которым он сейчас выходит в море. Старик обещает зайти за ним утром.
Сантьяго, завернувшись в одеяло, ложится спать на кровать, на которой вместо матраса постелены старые газеты, а вместо подушки он кладет под голову свои штаны. Старик быстро засыпает и ему снится Африка, к берегам которой он ходил в юности юнгой. Старику больше не снятся бури, великие события, женщины, огромные рыбы, ему снятся львы, резвящиеся как котята, на морском берегу.
Старик просыпается задолго до рассвета, одевается и идет будить мальчика. Разбудив Манолина, они возвращаются в хижину старика за снастями. Они относят их в лодку и пьют кофе в закусочной, которая открывается очень рано, потому что обслуживает рыбаков. Манолин уходит за наживкой, а Сантьяго пьет еще кофе, потому что знает, что больше до вечера он ничего не будет есть. В лодку старик не берет еду, только воду. Манолин приносит наживку и желает старику удачи. Старик выводит лодку из гавани и в темноте слышит, как другие рыбаки тоже выходят в море. Сантьяго решает уйти сегодня далеко в море и налегает на весла.
Светает. Старик мерно гребет и размышляет о море. Он сравнивает море с женщиной. Оно также дарит великие милости и совершает необдуманные поступки. Еще не рассвело, а старик уже закинул крючки с наживками.
Встало солнце. Старик видит другие лодки, но они гораздо ближе к берегу, чем его. Через 2 часа лодка старика еще больше отдалилась от берега. Птица-фрегат помогает Сантьяго выслеживать рыбные косяки, и он ловит тунца, из которого планирует сделать наживку. Лодка старика ушла так далеко в море, что уже не видно береговой линии. Но старик не тревожится. Сантьяго уверен, что он всегда найдет дорогу домой. Все его мысли о том, что сегодня ему обязательно повезет, и он поймает большую рыбу.
Полдень. Становится очень жарко. И наконец у Сантьяго клюнула рыба. Старик сразу понял, что рыба большая и ему понадобится весь его опыт, чтобы ее поймать. Но он твердо уверен в своих силах. Старик решает, что рыба уже мертва и хочет ее вытянуть, но у него ничего не получается. Рыба оказалась живой и потянула лодку рыбака за собой в море. Старик жалеет, что мальчик сейчас не с ним, ему не помешал бы помощник. В течение 4 часов рыба буксирует лодку старика и не думает умирать. Старик устал и хочет пить, но боится упустить лесу. Он бережет силы. Он думает, о том, чтобы его не подвели руки.
Ночью похолодало и бечевой старику натерло спину. Он начинает уставать, так как держит бечеву руками, боясь привязать ее к лодке. Ведь если рыба рванет, она может порвать бечеву и уйдет на глубину. Но если держать бечеву руками, при рывке можно осторожно стравливать веревку, не дав ей натянуться и порваться. Старик уже понимает, что пойманная им на крючок рыба очень большая и сильная. Но Сантьяго знает и то, что он сильнее и опытнее ее, и просто обязан ее победить. Он опять жалеет, что с ним нет Манолина. Сантьяго размышляет о судьбе пойманной им рыбы, и своей судьбе тоже. О том, что теперь их судьбы связаны, что он родился рыбаком, а она рыбой.
На рассвете рыба дернула бечеву так сильно, что старик, упав, рассек до крови щеку. Рассвело. Рыба так же неутомимо тянет лодку. Она еще полна сил, но плывет уже на меньшей глубине. Старик молит господа о том, чтобы рыба вынырнула, а ему хватило сил справится с ней. Рыба делает еще попытку вырваться и старику рассекает бечевой руку. Он досадует на себя, за то что дал рыбе поранить себя. Теперь ему приходится держать бечеву левой рукой. Старик замечает, что рыба тянет лодку медленнее. Он понимает, что скоро ему понадобятся все его силы и решает подкрепиться. Но у него из еды есть только сырой тунец, который он и ест, предварительно разделав, жалея о том, что не взял с собой соль и лимон. От тяжести рыбы у старика затекла левая рука. Старик смотрит на море и понимает, как он одинок. Он не любит быть беспомощным, поэтому сейчас все его мысли о том, что бы левая рука опять начала действовать. Он замечает, что рыба поднимается на поверхность воды. Только сейчас старик осознал насколько она огромна. Это была меч-рыба, размером больше его лодки. Рыба опять потянула лодку. Старик, немало повидавший на своем веку рыб, понимает, что эта самая большая из когда-либо выловленных им. И с ней он сейчас должен сразится в одиночку. Старик читает молитвы Богу и Богородице. После полудня Сантьяго замечает, что рыба сменила направление.
Старик отдыхал и разминал левую руку. Он думал о бейсболе. Когда зашло солнце, старик приободрился и вспомнил случай из своей жизни, когда он выиграл состязание и получил звание Сантьяго-Чемпион. Тогда он целые сутки просидел, сцепившись руками с могучим негром, самым сильным человеком в порту. Когда зрители стали настаивать, чтобы судьи объявили ничью, он все-таки поборол соперника и победил.
Старику удается поймать макрель себе на ужин. Он опять ест рыбу сырой. Сантьяго очень устал, у него болят спина и руки. Но старый рыбак подбадривает себя тем, что ноги у него в порядке, пищи и воды хватит еще на день, а рыба плывет медленнее.
Наступила вторая ночь его противоборства с рыбой. Старик любуется звездным небом. Ему становится жаль рыбу, которую он поймал, но эта жалость не лишает его решимости эту рыбу убить. Старику удается отдохнуть пару часов. Он хочет поспать, но боится упустить рыбу. Тогда он решает поесть. Разделав макрель, он заставил себя съесть половину филе, при этом старик замечает, что тунец был вкуснее. Он понимает, что он должен есть эту противную сырую макрель, чтобы справится с рыбой. Лодка движется все медленнее, и старик понимает, что рыба тоже устала. Пока она ведет себя смирно, старик решает поспать.
Он просыпается от рывка, леса, обжигая ладонь, уходила в воду. Потом рыба стала прыгать. Старик с трудом удерживал бечеву. Сантьяго снова жалеет, что с ним нет помощника. Старик радуется, что рыба во время прыжков набрала воздуха, и теперь не сможет уйти на глубину. Теперь старик ждет, когда она начнет кружит вокруг лодки, пытаясь вырваться.
Светает. У старика болят рассеченные бечевой руки, но он успокаивает себя тем, что для мужчины боль не страшна. Наступило 3 утро его рыбалки. Рыба стала делать круги вокруг лодки, а старик подводить ее ближе для решающего удара. Сантьяго заставил рыбу перевернуться, затем ударил прямо в сердце гарпуном. Старик сильно ослабел, и ему было очень плохо. Но, преодолев дурноту и слабость, он подтянул добычу к лодке и закрепил вдоль борта. Рыба была такая огромная, что можно было подумать, что это к ней прикрепили лодку. Старик поставил парус и направился к берегу.
Ему хотелось есть, но не на что было поймать даже маленькую рыбешку. Тогда старик натряс из водорослей креветок и подкрепился ими. Попив воды, Сантьяго почувствовал себя гораздо лучше. Он плыл домой с очень богатой добычей и часто поглядывал на рыбу, все еще не веря в свою удачу.
Первая акула догнала лодку, где-то, через час. Она почувствовала запах рыбьей крови и поплыла по следу. Это была очень большая акула, которая ничего не боялась. Старик, заметив ее, приготовил гарпун. Он понял, что она набросится на рыбу и приготовился защищать свой улов. Акуле удалось откусить кусок мяса от рыбы, прежде чем старик убил ее. Акула утонула, утащив гарпун старика на дно. Изуродованная акулой, рыба больше не радовала старика. И еще он ждал других акул. Из ножа и весла он сделал оружие против других акул.
Парус надувало свежим ветром, и лодка быстро шла к берегу. К старому рыбаку вернулась надежда, что он все-таки доставит свою добычу на берег. Старик попробовал свою рыбу на вкус и понял, что за такое вкусное и сочное мясо, он может выручить много денег. Но запах рыбы разносился по всему морю, и старик ничего с этим сделать не мог. Через 2 часа приплыли 2 акулы, которые стали рвать рыбу. Старик убил и их. Рыба теперь совсем не привлекала взор старика. Акулы выгрызли самое лучшее мясо. Сантьяго уже пожалел, что вообще выловил ее. Вскоре приплыла еще акула, убив которую, Сантьяго сломал нож.
Наступал вечер, а берег был даже еще не виден. Перед самым заходом солнца на лодку напали еще акулы, они рвали из рыбы куски мяса, а старик безуспешно пытался убить их дубинкой. Отогнав акул, старик заметил, что половину рыбы они уже съели. Акулы стали кружить около лодки. Солнце почти зашло, но Сантьяго решил не сдаваться и драться с акулами, пока не умрет. Он плыл в темноте домой и думал о том, что неплохо где-нибудь купить удачи. И сам себе отвечал, что ему не на что ее купить. Только боль в руках давала ему понять, что он еще не умер.
Вскоре он заметил городские огни. Тело его ломило и саднило руки. Он мечтал о доме и сне. Но в полночь старик опять сражался с акулами, которые напали целой стаей. Он бил в темноте дубинкой, пока ее не вырвали из рук. Потом выдернул румпель и бил им. Но акулы съели все мясо с рыбы и уплыли. Старик еле дышал и во рту почувствовал привкус меди. Он сплюнул в воду. Старик почувствовал себя совсем побежденным. Он поплыл домой, ни о чем не думая и ничего не чувствуя. Лодка шла быстро и легко, ведь ее больше не тормозила тяжесть рыбы. Старик думал, что лодка и парус целы, а румпель не сложно сделать новый.
Домой он вернулся, когда все вокруг спали. Свернув парус, он взял снасти и пошел домой. Он так страшно устал, что несколько раз останавливался, чтобы передохнуть. Дома он попил воды и лег спать. Он еще спал, когда утром пришел Манолин. Сегодня лодки из-за сильного ветра не вышли в море. Мальчик убедился, что старик дышит и пошел ему за кофе. Внизу у лодки старика, рыбаки измеряли остатки рыбы. В рыбе было 18 футов. Мальчик заплакал, так ему было жаль старика и его израненные руки. Он принес Сантьяго кофе и стал ждать когда он проснется.
Проснувшись, старик пил кофе и жаловался мальчику, что акулы его победили. Но Манолин сказал ему, что он победил рыбу. Он рассказал старому рыбаку, что его искали и рыбаки, и береговая охрана, и даже самолет. Но старик сказал, что он очень далеко уходил в море. Сантьяго признался, что соскучился по мальчику. А Манолин сказал, что теперь он будет рыбачить только со стариком, который должен научить его всему, что знает сам. А пока, старику надо подлечить руки, и Манолин ушел за лекарством в аптеку. Сантьяго попросил принести еще газеты, за те дни пока его не было. Старик снова заснул, ему снились сны, а мальчик сторожил его сон.