故事讲到一个精神沮丧的老渔人,在他对职业的自豪感(他留下的唯一自豪感)的支持之下,冒险远航至墨西哥湾流并在那里钓住了一条该水域中从未见过的最大的马林鱼。
桑提亚哥老人已经八十四天没有捕到一条鱼了。最初,一个年轻的孩子曼诺林和他一起分担恶运,但在过了四十天倒霉日子之后,孩子的爸爸让孩子到另一条船上干活去了。从那个时候起,桑提亚哥只是一个人干活。每天早晨他划着小船到有大鱼出没的墨西哥湾流去,每天晚上他总是两手空空地回来。 孩子喜欢并且可怜这个老渔人。曼诺林要是自己没有挣到钱,就会乞讨或偷窃以保证桑提亚哥有足够的食物和新鲜的鱼饵。老人谦卑地接受孩子的好意,谦卑中带有某种隐而不露的自豪感。晚餐时(吃的是大米饭和黑蚕豆)他们总会谈论在运气好的日子里一起捕获的大鱼,或是谈论美国的棒球赛和伟大的狄马吉奥。夜间桑提亚哥一个人躺在自己的小棚屋里,梦见非洲海滩上的狮子,几年前他航海去过那个地方。他不再梦见自己死去的老婆了。
在第八十五天,桑提亚哥在寒冷的黎明前的黑暗中,把小船划出了港口。在把陆地的气息抛在身后之后,他放下了钓丝。他的两个鱼饵是孩子给他的鲜金枪鱼,还有把鱼钩遮盖起来的沙丁鱼。钓丝垂直地下到暗黑的深水里。
太阳升起时,他看到别的一些船只都头朝着海岸,在海上看来海岸象是一条接近地平线的绿带子。一只盘旋的军舰鸟给老人指明了海豚追逐飞鱼的地方。但是鱼群游得太快、也太远了。这只猛禽又在盘旋了,这次桑提亚哥瞧见金枪鱼在太阳光下跃起。一条小金枪鱼咬住了他艉缆上的鱼钩。老人在把颤动的金枪鱼拉上船板以后,心想这可是一个好兆头。
快到中午时,一条马林鱼开始啃起一百深处的那块鱼饵来了。老人轻轻地摆布那条上了钩的鱼,根据钓丝的份量他知道那准是一条大鱼。最后他猛拉钓丝把鱼钩给稳住了。但是,那条鱼并没有浮出水面,反而开始把小船拖着往西北方向跑。老人打起精神,斜挎在肩膀上的钓丝绷得紧紧的。他虽然孤身一人,体力也不如从前,但是他有技术,他懂得许多诀窍。他耐心地等待鱼累乏下来。 日落之后,寒意袭人,老人冷得发抖。当他剩下的鱼饵中有一块被咬住时,他就用自己那把带鞘的刀把钓丝给割断了。有一次那条鱼突然一个侧身,把桑提亚哥拉得脸朝下地跌了一跤,老人的颊部也给划破了。黎明时分,他的左手变得僵硬并抽起筋来了。那条鱼还是一直往北游,一点陆地的影子都瞧不见了。钓丝又一次猛的一拉,把老人的右手给勒伤了。老人肚子饿得发慌,就从金枪鱼身上割下几片肉,放在嘴里慢慢嚼着,等着太阳出来晒暖他的身子和减轻手指抽筋的痛苦。
第二天早上,这条鱼蹦出了水面。桑提亚哥瞧见鱼的跃起,知道自己钓到了一条未见过的最大的马林鱼。一会儿鱼又往下沉去,转向了东方。在炽热的下午,桑提亚哥节省地喝起水壶里的水。为了忘掉划破的手和疼痛的背,他回想起过去人们如何称他为优胜者和他如何在西恩富戈斯地方一家酒馆里和一个大个子黑人比手劲。有一次一架飞机嗡嗡地从头上掠过,向迈阿密飞去。
黄昏之际,一条海豚吞食了他重新放上鱼饵的小钩子。他把这条鱼提到了船板上,小心不去拉动他肩上的钓丝。休息一会之后,他切下几片海豚肉并且把在海豚胃中发现的两条飞鱼留了下来。那天夜里他睡着了。他醒来时觉得当这条鱼跳起时钓丝就滑过他的手指。他缓慢地把钓丝放松,尽力想把这条马林鱼拖乏。在这条大鱼放慢跳跃时,他把划破的双手放在海里洗,并且吃了一条飞鱼。日出时,这条马林鱼开始打起转来了。老人感到头晕目眩,但他尽力把大鱼在每转一圈时拉得更近一些。他虽然几乎筋疲力尽,终于还是把自己的捕获物拉得和小船并排在一起并用鱼叉猛击这条马林鱼。他喝了一点水,然后把马林鱼捆绑在他那条小船的头部和尾部。这条马林鱼比船还长两英尺。哈瓦那港从来没有见过捕到这么大的鱼,他扯起有补丁的船帆开始向西南方向驶去,心想这下要发财了。