Heart of Darkness draait om Marlow, een in zichzelf gekeerde zeeman, en zijn reis over de Congo-rivier om Kurtz te ontmoeten, een idealistische man met grote capaciteiten. Marlow neemt een baan aan als kapitein op een rivierboot bij de compagnie, een Belgisch bedrijf dat handel drijft in de Congo. Terwijl hij naar Afrika reist en vervolgens de Congo opvaart, stuit Marlow op de wijdverspreide inefficiëntie en wreedheid in de compagniestations. De inheemse bevolking van de regio is gedwongen in dienst te treden van de compagnie en lijdt onder overwerk en mishandeling door de agenten van de compagnie. De wreedheid en smerigheid van de imperialistische onderneming staan in schril contrast met de onbewogen en majestueuze jungle die de nederzettingen van de blanken omringt, waardoor ze kleine eilandjes lijken temidden van een onmetelijke duisternis.
Marlow arriveert op het Centraal Station, dat wordt geleid door de general manager, een onheilspellend, samenzweerderig personage. Hij ontdekt dat het stoomschip gezonken is en wacht maandenlang op onderdelen om het te repareren. Zijn belangstelling voor Kurtz groeit in deze periode. De manager en zijn favoriet, de steenbakker, lijken Kurtz te vrezen als een bedreiging voor hun positie. Het gerucht gaat dat Kurtz ziek is, waardoor de vertragingen in de reparatie van het schip des te kostbaarder zijn. Marlow krijgt uiteindelijk de onderdelen die hij nodig heeft om zijn schip te repareren, en hij en de manager vertrekken met een paar agenten (die Marlow pelgrims noemt vanwege hun vreemde gewoonte om lange, houten stokken overal mee naar toe te nemen) en een bemanning van kannibalen op een lange, moeilijke reis de rivier op. De dichte jungle en de drukkende stilte maken iedereen aan boord een beetje nerveus, en de occasionele glimp van een inheems dorp of het geluid van trommels maakt de pelgrims razend.
Marlow en zijn bemanning stuiten op een hut met opgestapeld brandhout, samen met een briefje waarop staat dat het hout voor hen is, maar dat ze het voorzichtig moeten benaderen. Kort nadat het stoomschip het brandhout heeft meegenomen, wordt het omgeven door een dichte mist. Wanneer de mist optrekt, wordt het schip aangevallen door een onzichtbare bende inboorlingen, die pijlen afvuren vanuit de veiligheid van het bos. De Afrikaanse stuurman wordt gedood voordat Marlow de inboorlingen wegjaagt met de stoomfluit van het schip. Niet lang daarna arriveren Marlow en zijn metgezellen bij het binnenstation van Kurtz, in de verwachting hem dood aan te treffen, maar een halfgekke Russische handelaar, die hen opwacht als ze aan land komen, verzekert hen dat alles in orde is en vertelt hen dat hij degene is die het bos heeft achtergelaten. De Rus beweert dat Kurtz zijn geest heeft verruimd en niet onderworpen kan worden aan dezelfde morele oordelen als normale mensen. Kennelijk heeft Kurtzh zich bij de inboorlingen als een god gevestigd en is hij op brute wijze op rooftocht gegaan in het omringende gebied, op zoek naar ivoor. De verzameling afgehakte hoofden die de omheiningspalen rond het station sieren, getuigen van zijn “methodes”. De pelgrims brengen Kurtz uit het station op een brancard, en een grote groep inheemse krijgers komt uit het bos en omsingelt hen. Kurtz spreekt tot hen en de inboorlingen verdwijnen in het bos.
De manager brengt Kurtz, die ernstig ziek is, aan boord van de stoomboot. Een mooie inheemse vrouw, blijkbaar de minnares van Kurtz, verschijnt op de oever en staart naar het schip. De Russische suggereert dat zij op de een of andere manier betrokken is bij Kurtz en al eerder problemen heeft veroorzaakt door haar invloed op hem. De Russische onthult Marlow, na hem geheimhouding te hebben gezworen, dat Kurtz de aanval op de stoomboot had bevolen om hen te laten geloven dat hij dood was, zodat ze zouden omkeren en hem aan zijn plannen overlaten. De Rus vertrekt dan per kano, uit angst voor het ongenoegen van de directeur. Kurtz verdwijnt in de nacht, en Marlow gaat op zoek naar hem, en vindt hem kruipend op alle vier in de richting van het inheemse kamp. Marlow stopt hem en overtuigt hem terug te keren naar het schip. De volgende ochtend varen ze de rivier af, maar de gezondheid van Kurtz laat snel te wensen over.
Marlow luistert naar Kurtz terwijl hij het schip bestuurt, en Kurtz vertrouwt Marlow een pakket persoonlijke documenten toe, waaronder een welsprekend pamflet over het beschaven van de wilden, dat eindigt met een gekrabbelde boodschap die zegt: “Roei alle beesten uit!” De stoomboot gaat kapot, en ze moeten stoppen voor reparaties. Kurtz sterft, terwijl hij zijn laatste woorden uitspreekt: “De verschrikking! De verschrikking!” – in de aanwezigheid van de verwarde Marlow. Marlow wordt kort daarna ziek en overleeft het ternauwernood. Uiteindelijk keert hij terug naar Europa en gaat op bezoek bij Kurtz’ intendant (zijn verloofde). Zij rouwt nog steeds, ook al is het al meer dan een jaar geleden dat Kurtz stierf, en ze prijst hem als een toonbeeld van deugd en prestatie. Ze vraagt wat zijn laatste woorden waren, maar Marlow kan het niet opbrengen haar illusies met de waarheid te verbrijzelen. In plaats daarvan vertelt hij haar dat het laatste woord van Kurtz haar naam was.