I
Akcja utworu rozpoczyna się na statku krążowniczym „Nellie” płynącym po Tamizie. Podróżują nim czterej bohaterowie: kapitan, prawnik, księgowy i Marlow. Ostatni z nich to człowiek w podeszłym wieku, wyglądający na doświadczonego marynarza. Zbliża się wieczór. Marlow niespodziewanie wypowiada słowa: „A i to miejsce było jednym z ciemnych zakątków ziemi” i – ku zdumieniu towarzyszy – rozpoczyna opowieść o pewnej niezwykłej podróży:
Marlow jako młody człowiek powraca do Londynu z żeglugi po Oceanie Indyjskim. Wspomina swoje dzieciństwo, marzenia o wielkich podróżach i szukanie na mapach świata ciemnych miejsc, wciąż niezbadanych przez człowieka. Jednym z takich miejsc jest Afryka. Bohater postanawia spełnić swoje życiowe marzenie, nawiązać kontakt z towarzystwem handlowym z siedzibą w Afryce i poprosić o zatrudnienie. Udaje mu się je uzyskać dzięki protekcji ciotki – członkowie jednej ze spółek handlowych poszukują kapitana, który będzie dowodził parowcem. Po uzyskaniu rekomendacji i wizycie u lekarza Marlow pakuje się i wsiada na francuski statek.
Po dobiciu do brzegu bohater udaje się w podróż do wyznaczonego miejsca pracy. Stacja spółki handlowej leży nad rzeką Kongo. Bohater jest rozczarowany tym miejscem, zauważa, w jaki sposób traktuje się murzyńskich pracowników. Tubylcy noszą kajdany, są skuci łańcuchami i bici z błahych powodów. Marlow chce odejść, uniknąć widoku męczonych robotników. Chroni się pod najbliższym skupiskiem drzew, ale tam zastaje kolejny makabryczny widok – grupę tubylców umierających z głodu. Przerażony, daje jednemu z chłopców suchar i odchodzi.
W pobliżu stacji spotyka księgowego spółki ubranego w biały, elegancki garnitur. Od mężczyzny dowiaduje się po raz pierwszy o działalności niejakiego Kurtza, wybitnego agenta handlowego. Kurtz miał odznaczać się niezwykłą przedsiębiorczością w magazynowaniu i wysyłaniu kości słoniowej do Europy. Marlow jest zaintrygowany opowieścią księgowego, chciałby poznać tajemniczego Kurtza. Po kilku dniach wraz z karawaną wyrusza w podróż do centralnej stacji handlowej. Na miejscu dowiaduje się, że parowiec, którym miał dowodzić, leży na dnie rzeki.
Wydobycie i naprawa statku trwały kilka miesięcy. W międzyczasie bohater nawiązuje znajomość z dyrektorem stacji, dowiaduje się też o chorobie Kurtza i konieczności sprowadzenia go do centralnej stacji handlowej. Dyrektor, podobnie jak księgowy, wysławia osiągnięcia Kurtza i zamartwia się o jego los. Marlow, rozczarowany brakiem inicjatywy ze strony członków spółki, z niecierpliwością oczekuje na ukończenie naprawy statku.
II
Rozpoczyna się żegluga w górę rzeki Kongo. Bujna przyroda, dżungla i parny tropikalny klimat przytłaczają Marlowa. Żegluga po rzece jest niebezpieczna. Kapitan prowadzi statek intuicyjnie, uważnie omijając wystające konary i wypatrując mielizn. Prócz Marlowa na statku płynie dyrektor stacji handlowej, jego trzech towarzyszy i około dwudziestu tubylców (ludożerców). Bohater docenia pracowitość tych ostatnich, kontrastującą z lenistwem i beztroską dyrektora. Jeden z Murzynów zostaje palaczem. Marlow stara się też nauczyć go sterowania statkiem. Podróż robi się coraz bardziej uciążliwa. W ciągu dnia podróżnikom doskwiera upał i nadmierna wilgotność powietrza, nocą budzą ich dalekie odgłosy tam-tamów.
Pięćdziesiąt mil przed stacją Kurtza parowiec dopływa do mniejszej stacji, składającej się z szopy i masztu. W słomianej chacie podróżnicy znajdują drewno i informację, by zbliżać się do kolejnej stacji z dużą ostrożnością. Marlow znajduje w szopie książkę dotyczącą zagadnień marynarki – jest zdumiony niezwykłym znaleziskiem na odludziu. Następnego ranka podróżnicy słyszą dzikie wrzaski. Pomimo niebezpieczeństwa parowiec rusza w dalszą żeglugę. W pobliżu jednej z rzecznych cieśnin statek zostaje zaatakowany. Tubylcy strzelają z łuków. Marlow oddaje ster palaczowi, a sam stara się zapanować nad sytuacją, zauważa też wielki pień na trasie statku. Podróżnicy strzelają do ukrytych w gąszczu tubylców. Atak z obydwu stron nasila się, ginie palacz parowca przebity zatrutą strzałą. Tego samego dnia parowiec dopływa szczęśliwie do stacji Kurtza. Przybyszy wita rosyjski marynarz, wychwalając – tak jak inni – niezwykłą charyzmę miejscowego zarządcy.
III
Rosyjski marynarz opowiada Marlowowi o swojej znajomości z Kurtzem. Twierdzi, że opiekował się nim w czasie jego choroby. Z opowieści mężczyzny wyłania się jednak obraz niebezpiecznego, chciwego łowcy, zdolnego do morderstwa. Rosjanin jest pełen uwielbienia dla Kurtza, naiwnie wierzy w jego wielkość. Przytacza jednak również opowieść o tym, jak samodzielnie zgromadził niewielką ilość kości słoniowej. Kurtz zażądał, by mu ją oddano i bezczelnie zagroził towarzyszowi śmiercią. Ten poddał się, ale nie opuścił stacji. Marynarz przyznaje też, że Kurtz łupił lokalne wioski i stał się dla miejscowych kimś w rodzaju białego, demonicznego przywódcy. Marlow jest wstrząśnięty, tym bardziej, że dostrzega dom Kurtza otoczony makabryczną palisadą złożoną z uciętych głów tubylców.
Wtem, w pobliżu domku pojawia się grupa Murzynów niosących na noszach białego człowieka. Jest nim sam Kurtz. Chory zostaje przeniesiony na statek. Murzyni czekają na swego „pana” w pobliżu lasu. Do parowca podchodzi piękna czarna kobieta, chce wejść na statek, ale powstrzymuje ją strach. W rozpaczliwym geście podnosi w górę ramiona i odchodzi. Kurtz przegląda dostarczoną korespondencję, jest rozgniewany koniecznością opuszczenia stacji. Dyrektor wyjaśnia Marlowowi, że zarządowi spółki nie spodobały się ostatnie działania Kurtza, które wznieciły agresję tubylców. Chwilę później Marlow rozmawia z rosyjskim marynarzem, a ten wyjawia mu, że to Kurtz nakazał tubylcom zaatakowanie statku. Chciał w ten sposób odstraszyć towarzyszy i wmówić im swą śmierć.
W nocy zaniepokojony Marlow zauważa, że Kurtz uciekł. Trafia na jego ślad i z wielkim trudem przekonuje do powrotu. Podczas podróży powrotnej chory przekazuje kapitanowi plik dokumentów i prosi o ich zachowanie. Wkrótce umiera.
Po zakończeniu żeglugi Marlow wraca do Londynu. Tam spotyka narzeczoną Kurtza i oddaje jej dokumenty mężczyzny. Podczas rozmowy kobieta wypytuje o ostatnie słowa narzeczonego. Marlow kłamie twierdząc, że Kurtz wymówił imię narzeczonej. Tak naprawdę ostatnią wypowiedzią umierającego były słowa: „Zgroza, zgroza”.