Hlavnou postavou je starý rybár Santiago, ktorý žije na Kube. Už 84 dní nič neulovil, a preto si o ňom ostatní myslia, že má smolu. Pomáhal mu chlapec Manolin, ale jeho rodičia ho poslali na inú loď.
Santiago sa však nevzdáva a rozhodne sa vyplávať ďaleko na more, aby dokázal, že ešte niečo zvládne. Tam sa mu podarí chytiť obrovského marlína (veľkú rybu). Ryba je však taká silná, že ťahá jeho loď celé dni.
Nasleduje dlhý boj medzi človekom a rybou. Santiago je vyčerpaný, má zranené ruky, ale nevzdáva sa. Po veľkej námahe sa mu podarí marlína zabiť a priviazať ho k lodi.
Cestou späť však prídu žraloky, ktoré začnú rybu požierať. Santiago sa ich snaží odohnať, ale postupne mu zožerú takmer celý úlovok. Keď sa vráti do prístavu, zostane z ryby len kostra.
Santiago je síce fyzicky porazený, ale morálne víťazí, pretože dokázal svoju odvahu, vytrvalosť a silu. Chlapec Manolin ho obdivuje a chce s ním opäť chodiť na ryby.
