Геральт из Ривии, «ведьмак» — охотник на чудовищ — прибывает в приморское королевство Керак и попадает в неприятности, согласившись на предложение коррумпированного чиновника завысить награду за убитое чудовище. Геральта арестовывают и судят, обвиняя в присвоении средств королевской казны; освободившись из-под стражи, Геральт обнаруживает пропажу своих драгоценных мечей — стального и серебряного. У Геральта находятся старый друг в Кераке — бард Лютик, чей кузен Ферран занимает должность на королевской службе. Лютик сообщает Геральту, что свободой ведьмак обязан придворной волшебнице Литте Нейд. Геральт навещает дом Литты и встречается с волшебницей и ее ученицей Мозаикой; при первом визите Геральт отвергает попытки Литты его соблазнить, но позже уступает и становится ее любовником. Литта обещает Геральту найти украденные мечи с помощью магии и показывает ему колдовские видения — продажу мечей на аукционе, скалу необычной формы, играющего с медальоном кота, женщину у реки, процессию мертвецов у некоей горы и огромную волну. Лютик узнает скалу из описания Геральта и предлагает проводить к ней ведьмака.
Поселение Равелин, куда попадают Геральт и Лютик, находится под властью местного преступного босса Пираля Пратта. Пратт сообщает, что перенаправил продавца украденных мечей в аукционный дом Борсоди в Новиграде. В обмен на эту информацию Пратт заставляет Геральта сразиться на арене с чудовищем-вигилозавром. Позже Геральт общается с Эгмундом, принцем Керака; Эгмунд сначала пытается нанять ведьмака для убийства короля, а затем, когда Геральт отказывается, обращает все в шутку и предлагает ведьмаку послужить телохранителем на королевской свадьбе. Вернувшись в Керак, Геральт узнает от Литты Нейд о просьбе прибыть в замок Риссберг.
Замок Риссберг принадлежит группе ученых чародеев; здесь у Геральта есть знакомые — Пинетти и Тзара. Ведьмак предъявляет им несколько табличек, снятых им с убитых чудовищ — доказательство того, что монстры были созданы в Риссберге, однако чародеи отвергают его обвинения. Они считают, что в окрестностях замка убивает людей демон, вызванный кем-то из сотрудников Риссберга. Расследуя убийства, Геральт сталкивается с еще одним чародеем из Риссберга — Сорелем Дегерлундом, который захватывает ведьмака в плен и признается, что подстраивал убийства, чтобы коллеги считали его более могущественным, чем он есть. У Дегерлунда Геральт видит золотой медальон с гербом Керака.
Бежав из подземелья Дегерлунда, Геральт оказывается на спорной территории между королевствами Редания и Темерия и решает направиться в Новиград, где с аукциона должны продать его мечи. По дороге он знакомится с краснолюдом по имени Аддарио Бах, а позже садится на речной корабль «Пророк Лебеда». Как оказывается, экипаж корабля направлен по реке с миссией — вернуть девочку, похищенную лисой-оборотнем, «агуарой». Они везут на обмен другую девочку-агуару, но один из членов команды убивает заложницу. Это вызывает ярость агуары, следящей за кораблем, и на «Пророка Лебеду» обрушиваются всевозможные иллюзии и хищники — в конце концов Геральту, Аддарио и владельцу корабля ван Влиту удается уйти на лодке, но они не успевают на аукцион вовремя. Геральт не знает, что мечи выкупила его старая подруга Йеннифэр.
Оставшись ни с чем, Геральт возвращается в Керак; он вновь встречается с чародеем Пинетти, который в качестве компенсации дарит ведьмаку собственный старый меч — дорогой вироледский клинок. Геральт пользуется помощью оборотня Дуссарта, чтобы найти подземелье Дегерлунда, где ведьмак уже однажды побывал в качестве пленника; Геральт сражается со слугами чародея, а потом убивает своего врага. Он вновь прибывает в Керак на королевскую свадьбу — здесь разыгрывается противостояние короля Белогуна и его сыновей. Как и подозревает Геральт, короля убивают — его душит заколдованный медальон с цепочкой, который ведьмак видел у Дегерлунда. Заказчиком убийства оказывается сын короля, принц Вираксас, который немедленно занимает трон. В этот момент на Керак обрушивается цунами, которое погребает под собой город. Позже Литта и Йеннифэр узнают, что Геральт сбежал с Мозаикой, ученицей Литты, но позже оставил ее. Геральт сталкивается с другим ведьмаком, Брегеном из школы Кота, и получает назад свои мечи. Он вновь встречает лису-оборотня, которая показывает ему, что девочка с корабля выжила, и на мгновение принимает облик Йеннифэр.
В эпилоге Нимуэ — персонаж, живущий спустя век после смерти Геральта в финале «Владычицы Озера» — сталкивается в лесу с ведьмаком, удивительно похожим на Геральта. Ведьмак говорит ей «Сказание продолжается, история никогда не завершается» и исчезает.