Le recueil se compose de deux récits, qui partagent deux traits communs. L'un est une même technique de narration : un narrateur non identifié rapporte les dires d'un autres narrateur, on a un récit dans le récit. L'autre est que le narrateur identifié est le même : un vieux marin, nommé Charles Marlowe, qui est plus ou moins un double de Conrad lui-même.
Dans le premier récit, Marlowe, jeune, vient de prendre son premier poste d'officier sur un cargo chargé de quelques centaines de tonnes de charbon à destination de Bangkok. Le navire connaît toutes les mésaventures possibles, voie d'eau, tempête épouvantable qui lui cause de graves avaries, et entraînent un retard de plusieurs mois de son départ. Enfin, après avoir appareillé pour de bon, on découvre au milieu de l'Océan Indien, que la cargaison a pris feu spontanément…
Le deuxième récit, qui donne son titre au recueil, voit un Charles Marlowe, vieux commandant pratiquement à la retraite, s'ennuyer. Il accepte de commander un bateau de rivière, chargé de remonter un grand fleuve. Aucun nom n'est donné, mais il ne fait pas de doute qu'il s'agit du Congo, dans ce qui sera le Congo belge. Il est chargé d'aller chercher un personnage étrange, nommé Kurtz, qui commande un poste commercial qui lui sert à razzier de l'ivoire. D'autres européens sont passagers sur le bateau, dont le directeur local de l'entreprise. Tous reconnaissent à Kurtz un charisme hors du commun. Celui-ci, malade, doit être relevé mais refuse de l'accepter…