В 2033 году, спустя более двух десятилетий после Третьей мировой войны, поверхность Земли оказалась заражённой радиацией и населённой мутантами. В Москве выжили только те, кто успел укрыться в метро, превратившемся в бомбоубежище с гермодверями и системами фильтрации воздуха и воды. Единственным способом выхода на поверхность оставались сталкеры — вооружённые и защищённые бойцы, выполнявшие разведывательные миссии.

Обитатели метро расселились по станциям, каждая из которых имела собственные законы, органы власти и вооружённые силы. Между станциями происходили конфликты и союзы, в том числе крупная война между Ганзой — объединением станций кольцевой линии — и коммунистической Красной линией. Станция ВДНХ, независимая от обеих сторон, считалась относительно безопасной: её жители занимались выращиванием грибов и свиней, обменивали продукты на оружие и медикаменты. Здесь жил Артём — молодой человек, который вырос под опекой отчима, дяди Саши Сухого.

Артём родился до войны, однако его родная станция пала под натиском мутантов, прозванных «крысяной ордой». Спаслись лишь пятеро мужчин, среди которых был Сухой, получивший от матери Артёма. В последнее время на ВДНХ начали совершаться нападения со стороны человекообразных мутантов с чёрной кожей — существ, способных телепатически воздействовать на людей и вызывать у них страх. Артём считал себя виновным в открытии гермодвери на поверхность, из-за чего «чёрные» проникли в метро.

Однажды на ВДНХ появился сталкер Хантер — старый знакомый Сухого, который придерживался мнения, что люди должны бороться за своё выживание и уничтожать угрозы, в то время как Сухой считал, что чёрные — новый разумный вид, способный заменить человечество. Хантер взял на себя роль защитника метро и отправился на поверхность разведать источник мутантов. Перед отъездом он вручил Артёму футляр с запиской и поручил, если не вернётся в течение двух дней, доставить информацию в Полис человеку по имени Мельник.

Хантер пропал, и Артём решил отправиться в Полис — культурный центр метро, расположенный под Библиотекой. Он начал путешествие с каравана, направлявшегося на соседнюю Рижскую станцию, с которой ВДНХ планировала объединиться. Хотя участок между станциями считался относительно безопасным, караван сопровождали охранники из-за неизвестных угроз в неизведанных переходах.

Миновав станцию Алексеевская, Артём услышал свистящий шёпот, который воздействовал на сознание других членов каравана, сводя их с ума. Сам молодого человека этот звук не затронул, и он сумел вывести спутников из опасной зоны без потерь. На Рижской к Артёму обратился человек по имени Бурбон, который попросил провести его через такой же опасный туннель к Сухаревской — месту, совпадавшему с маршрутом Артёма. По пути, возле последней заставы, Артём почувствовал приближение великой тайны, но испугался и отверг это ощущение.

Достигнув торговой станции Проспект Мира, освещаемой обычным светом благодаря влиянию богатой Ганзы, караван прошёл без происшествий. Однако на следующем перегоне на путников напала неведомая сила, овладевшая сознанием, в результате чего умер Бурбон. Артём, неся тело спутника к Сухаревской, встретил пожилого мужчину, называвшего себя колдуном и утверждавшего, что шум, вызывающий безумие, создают неупокоенные души, ставшие частью метро. Колдун, считающий, что Артём призван выполнить особую миссию, получил от парня карту метро — легендарный Путеводитель с отметками опасных участков, после чего сколотил караван для сопровождения молодого человека к Китай-Городу.

Во время пути люди стали восставать против колдуна, и когда тот обнаружил на карте знак опасности, решил изменить маршрут через другой туннель. Вслед за колдуном пошли Артём и человек по имени Туз, остальные погибли. На Китай-Городе, контролируемом двумя бандитскими группировками, Артём не смог отдохнуть: на станцию напали, началась перестрелка, и он был вынужден скрыться в переходе. По пути он помог старику Михаилу Порфирьевичу, у которого случился сердечный приступ, и остался с ним и его спутником — подростком с синдромом Дауна по имени Ванечка.

На станции Кузнецкий Мост, населённой лучшими техниками метро, Артём узнал от Михаила Порфирьевича о существовании Изумрудного Города — части Красной линии, отрезанной обвалом и населённой выжившими профессорами и студентами. Ночью на станцию пришли красные бойцы, и Михаила Порфирьевича собирались расстрелять. Артём убил офицера, пытаясь спасти собравшегося умереть Ванечку, но спасти его не удалось. За это Артём попал в фашистскую тюрьму, где был избит и приговорён к повешению.

В момент казни на станцию ворвалась моторизованная дрезина Красной Боевой Бригады, отбившая Артёма. Несмотря на желание остаться с бригадой, он продолжил свой путь, поскольку считал своей миссией спасение метро. Коммунисты высадили его на Павелецкой станции, где отсутствовали гермодвери, и каждую ночь с поверхности проникали опасные твари. Жители Павелецкой, оборонявшие метро, регулярно получали оружие от Ганзы.

Из-за отсутствия документов Артём не мог попасть в Ганзу, но познакомился с Марком, который предложил выиграть визы на крысиных бегах. Проиграв, они были вынуждены год работать на станции, очищая санитарные помещения. Позднее Артём сбежал с работы и оказался на станции Серпуховская, где его подобрала секта, верившая в близкий Армагеддон и наступление райской жизни на поверхности. После попыток обращения Артём сбежал и добрался до Полянки, где познакомился с двумя стариками, рассказывавшими о загадочном Метро-2 — секретной сети для избранных, контролируемой таинственными Невидимыми Наблюдателями. Эти существа следят за людьми и ожидают, когда человечество искупит свои грехи, чтобы помочь остаткам выживших.

Размышляя о своём путешествии, Артём осознал, что оно не случайно и имеет внутреннюю логику. Он почувствовал необходимость двигаться вперёд и вошёл в тёмный туннель, ведущий к Полису. В пути ему явился невидимый преследователь, предупредивший не торопиться. Перед входом в Боровицкую станцию он услышал выстрелы и решил переждать.

В Полисе охранники пропустили Артёма, услышав, что он пришёл к сталкеру Мельнику. Там он познакомился с Данилой — брамином, хранителем знаний, который рассказал о кастовой структуре общества Полиса и о Великой Библиотеке, куда ходят лишь сталкеры из-за опасных существ, библиотекарей. Брамины верили, что в Библиотеке хранится древняя Книга, содержащая всю историю человечества.

На следующий день Мельник встретился с Артёмом, которому он был знаком по записке от Хантера. После рассказа о чёрных и странствиях по метро был проведён Совет, который признал, что помочь ВДНХ невозможно. Однако брамин сообщил Артёму, что Полянка — станция Судьбы, где избранные встречаются с Провидением, и предложил подняться в Библиотеку для поиска Книги в обмен на помощь ВДНХ.

Отряд из Артёма, Данилы, Мельника и сталкера Девятого отправился на поверхность. Артём, увидев Кремль, чуть не попал в ловушку, но спутники спасли его. В Библиотеке отряд атаковали библиотекари — полумозговые тварь, одна из которых смертельно ранила Данилу. Перед смертью он передал Артёму пакет с наградой за Книгу, которую тот не нашёл. Возврат в Полис был закрыт, поэтому Мельник посоветовал Артёму идти по поверхности к станции Смоленская и пообещал встретить его у гермодверей до рассвета, чтобы избежать ослепления ярким светом.

По пути Артёма преследовала стая хищных существ, но ему удалось добраться до Смоленской, где уже ждал Мельник. Вместе они открыли пакет, в котором находилась карта с отмеченной уцелевшей ракетной частью. Для уничтожения улья чёрных предстояло пройти через Метро-2, вход в которое находился на станции Маяковская.

Ночью Артёму приснился кошмар о пустой ВДНХ и таинственном встречающем его в переходе. Утром он отправился с Мельником на Киевскую станцию, где исчезали дети. Разыскивая пропавшего мальчика Олега, Артём обнаружил люк в потолке перед завалом и вместе с отцом ребёнка проник на Парк Победы. Там их захватили дикари — люди, деградировавшие и создавшие религию вокруг мифического Великого червя, который, по их верованиям, создал туннели и живых существ метро.

Жрец племени стремился создать новую цивилизацию без машин, запрещённых в их обществе, и похищал детей для пополнения племени, а взрослых «людей-машин» поедал. Артёма и Антона едва не съели, но их спас Мельник с группой сталкеров, проникших на Парк Победы через Метро-2. В ходе боя туннель обрушился, оставив единственный путь через Метро-2.

Чтобы выйти на Маяковскую, отряд должен был пройти через центральную станцию под Кремлём, где их едва не уничтожило огромной биологический мутант, развившийся из сброшенного оружия. Потеряв половину людей, включая Олега, сталкеры смогли ликвидировать чудовище и покинули станцию. Третьяка убили дикари, но выяснилось, что он был ракетчиком, и его брат Андрей согласился помочь Мельнику.

Мельник привёл отряд к ракетной базе, поручив Артёму вместе со сталкером Ульманом приблизиться к улью чёрных и помочь навести ракеты на цель.

На дрезине Артём и Ульман доехали до Проспекта Мира, где Артём узнал о почти полном уничтожении ВДНХ мутантами. Там ему снова приснился кошмар с чёрным существом. Выяснилось, что Ганза намерена взорвать переход, чтобы изолировать станцию, захваченную мутантами. За несколько часов до взрыва Артём побывал на родной ВДНХ, попрощался с Сухим и вспомнил весь свой долгий путь.

На поверхность он поднялся вместе с отрядом Ульмана. Там его атаковала мутировавшая птицеобразная тварь, но сталкеры спасли Артёма и доставили на Останкинскую телебашню, откуда было легче нацелить ракеты. С высоты Артём увидел огромный улей чёрных — пульсирующее образование, в котором мутанты двигались как муравьи. Когда ракеты полетели к цели, Артём потерял сознание и увидел туннель из своих кошмаров, где чёрный существо назвало его избранным.

Чёрные оказались разумной расой, способной жить на поверхности и образовывать колонию. Они знали о человечестве и стремились помочь ему, однако не могли вступить с людьми в контакт, пока не нашли того, кто способен услышать их ментально. Этим человеком стал Артём, которого чёрные оберегали и направляли, пытаясь через сны донести до него своё послание.

Пробудившись, Артём увидел, как мутанты ожидали событий с надеждой, но первые ракеты разрушили улей, и связь с ними оборвалась. Сознание Артёма вновь погрузилось в темноту и пустоту туннелей, однако он молча встал и направился домой — в метро.