老渔夫桑地亚哥已经八十四天没打到鱼了,这一天,老人又划着空船回来了,他吃过晚饭后摸黑上床睡觉,他梦见了童年所看到的非洲,还梦见了海滩上的狮子。
第八十五天早晨,老人又出海打鱼了,他离陆地越来越远。天还没亮,他就撒下鱼食,这一天,他终于钓着了一条大马林鱼。四个钟头过后,那条大鱼拖着小船向浩渺的海面游去。太阳升起来了,马林鱼拼命挣扎,老头儿的手被钓丝划破了,马林鱼越游越慢,终于露出了水面。夜晚时,马林鱼一次次高高跳起,重重落下,老人的右手勒出了血。第三天,那鱼开始打转了,两个钟头后,老人累极了,他忍住疼痛,举起鱼叉扎进鱼腰里,那鱼仰面朝天,终于死了。
老人竖起桅杆,挂起风帆,开始往回划,谁知死鱼的血水招来了鲨鱼,老人拿鱼叉朝鲨鱼的头刺去,鲨鱼被刺死的同时带走了鱼叉,又有两条鲨鱼向他和死鱼袭来,他拿起绑着刀子的船桨向鲨鱼的头刺去,扎死了鲨鱼。那条死鱼成了所有鲨鱼的目标,鲨鱼一次又一次冲来,老人用棍子揍,用棍棒劈,棍棒丢了,就两手抱住舵把,一次又一次地劈向鲨鱼。
当船驶进渔港的时候已经是半夜,老人精疲力尽地躺在床上睡着了,在他的船周围,只有一架足有十八英尺长的鱼骨骼。睡梦中,老人又遇见了狮子。