События происходят в первой половине XIX в., в вымышленном приволжском городке Калинове. Первое действие – в общественном саду на высоком берегу Волги. Местный механик-самоучка Кулигин беседует с молодыми людьми – Кудряшом, приказчиком богатого купца Дикого, и мещанином Шапкиным – о грубых выходках и самодурстве Дикого. Затем появляется Борис, племянник Дикого, который в ответ на расспросы Кулигина рассказывает, что родители жили в Москве, дали ему образование в Коммерческой академии и оба умерли во время эпидемии. Он же приехал к Дикому, оставив сестру у материнской родни, чтобы получить часть наследства бабушки, которое Дикой должен ему отдать согласно завещанию, если Борис будет к нему почтителен. Все его уверяют: на таких условиях Дикой никогда не отдаст ему денег. Борис жалуется Кулигину, что никак не может привыкнуть к жизни в доме Дикого, Кулигин рассказывает о Калинове и завершает свою речь словами: «Жестокие нравы, сударь, в нашем городе, жестокие!»
Калиновцы расходятся. Вместе с другой женщиной появляется странница Феклуша, хвалящая город за «бла-а-лепие», а дом Кабановых за особую щедрость к странникам. «Кабановы?» – переспрашивает Борис: «Ханжа, сударь, нищих оделяет, а домашних заела совсем», – поясняет Кулигин. Выходит Кабанова в сопровождении дочери Варвары и сына Тихона с женой Катериной. Она ворчит на них, но наконец уходит, разрешив детям пройтись по бульвару. Варвара отпускает Тихона тайком от матери выпить в гостях и, оставшись вдвоем с Катериной, беседует с ней о домашних отношениях, о Тихоне. Катерина рассказывает о счастливом детстве в родительском доме, о своих горячих молитвах, о том, что она переживает в храме, воображая ангелов в солнечном луче, падающем из купола, мечтает раскинуть руки и полететь и, наконец, признается, что с ней происходит «неладное что-то». Варвара догадывается, что Катерина кого-то полюбила, и обещает по отъезде Тихона устроить свидание. Это предложение приводит Катерину в ужас. Появляется сумасшедшая барыня, грозящая тем, что «красота-то в самый омут ведет», и пророчит адские муки. Катерина страшно пугается, а тут еще «гроза заходит», она торопит Варвару домой к образам молиться.
Второе действие, происходящее в доме Кабановых, начинается разговором Феклуши с горничной Глашей. Странница расспрашивает о домашних делах Кабановых и передает баснословные рассказы о дальних странах, где люди с песьими головами «за неверность» и т. п. Появившиеся Катерина и Варвара, собирающие Тихона в дорогу, продолжают разговор об увлечении Катерины, Варвара называет имя Бориса, передает от него поклон и уговаривает Катерину спать с ней в беседке в саду после отъезда Тихона. Выходят Кабаниха и Тихон, мать велит сыну строго наказывать жене, как жить без него, Катерину унижают эти формальные наказы. Но, оставшись наедине с мужем, она умоляет его взять ее в поездку, после его отказа пытается дать ему страшные клятвы в верности, но Тихон и слушать их не хочет: «Мало ли что придет в голову...» Вернувшаяся Кабаниха приказывает Катерине кланяться мужу в ноги. Тихон уезжает. Варвара, уходя гулять, сообщает Катерине, что они будут ночевать в саду, и дает ей ключ от калитки. Катерина не хочет его брать, потом, поколебавшись, прячет в карман.
Следующее действие происходит на скамейке у ворот кабановско-го дома. Феклуша и Кабаниха беседуют о «последних временах», Феклуша говорит, что «за грехи наши» «время в умаление приходить стало», рассказывает о железной дороге («змия огненного стали запрягать»), о суете московской жизни как дьявольском наваждении. Обе ждут еще худших времен. Появляется Дикой с жалобами на свою семью, Кабаниха упрекает его за беспорядочное поведение, он пытается ей грубить, но она это быстро пресекает и уводит его в дом выпить и закусить. Пока Дикой угощается, приходит присланный семьей Дикого Борис, чтобы узнать, где глава семейства. Выполнив поручение, с тоской восклицает о Катерине: «Хоть бы одним глазком взглянуть на нее!» Вернувшаяся Варвара велит ему ночью приходить к калитке в овраге за кабановским садом.
Вторая сцена представляет ночное гулянье молодежи, на свидание к Кудряшу выходит Варвара и велит Борису подождать – «дождешься чего-нибудь». Происходит свидание Катерины и Бориса. После колебаний, мыслей о грехе Катерина не в силах противиться проснувшейсялюбви. «Что меня жалеть – никто не виноват, – сама на то пошла. Не жалей, губи меня! Пусть все знают, пусть все видят, что я делаю (обнимает Бориса). Коли я для тебя греха не побоялась, побоюсь ли я людского суда?»
Все четвертое действие, происходящее на улицах Калинова, – на галерее полуразрушенного здания с остатками фрески, представляющей геенну огненную, и на бульваре, – идет на фоне собирающейся и наконец разразившейся грозы. Начинается дождь, и на галерею входят Дикой и Кулигин, который принимается уговаривать Дикого дать денег на установку солнечных часов на бульваре. В ответ Дикой его всячески бранит и даже грозит объявить разбойником. Стерпев брань, Кулигин начинает просить денег на громоотвод, Тут уж Дикой уверенно заявляет, что от посланной в наказание грозы «шестами да рожнами какими-то, прости Господи, обороняться» грех. Сцена пустеет, затем на галерее встречаются Варвара и Борис. Она сообщает о возвращении Тихона, слезах Катерины, подозрениях Кабанихи и выражает опасение, что Катерина признается мржу в измене. Борис умоляет отговорить Катерину от признания и исчезает. Входят остальные Кабановы. Катерина с ужасом ждет, что ее, не покаявшуюся в грехе, убьет молнией, появляется сумасшедшая барыня, грозящая адским пламенем, Катерина не может более крепиться и прилюдно признается мужу и свекрови в том, что «гуляла» с Борисом. Кабаниха злорадно заявляет: «Что, сынок! Куда воля-то ведет; <...> Вот и дождался!»
Последнее действие снова на высоком берегу Волги. Тихон жалуется Кулигину на свое семейное горе, на то, что мать говорит о Катерине: «Ее надо живую в землю закопать, чтоб она казнилась!» «А я ее люблю, мне ее жаль пальцем тронуть». Кулигин советует простить Катерину, но Тихон объясняет, что при Кабанихе это невозможно. Не без жалости говорит он и о Борисе, которого дядя посылает в Кяхту. Входит горничная Глаша и сообщает, что Катерина исчезла из дома. Тихон боится, как бы «она с тоски-то на себя руки не наложила!», и вместе с Глашей и Кулигиным уходит искать жену.
Появляется Катерина, она жалуется на свое отчаянное положение в доме, а главное – на страшную тоску по Борису. Ее монолог заканчивается страстным заклинанием: «Радость моя! Жизнь моя, душамоя, люблю тебя! Откликнись!» Входит Борис. Она просит его взять ее с собой в Сибирь, но понимает, что отказ Бориса вызван действительно полной невозможностью уехать вместе с ней. Она благословляет его в путь, жалуется на гнетущую жизнь в доме, на отвращение к мужу. Навсегда простившись с Борисом, Катерина начинает в одиночестве мечтать о смерти, о могиле с цветочками и птицах, которые «прилетят на дерево, будут петь, детей заведут». «Опять жить?» – с ужасом восклицает она. Подойдя к обрыву, она прощается с уехавшим Борисом: «Друг мой! Радость моя! Прощай!» и уходит.
Сцена заполняется встревоженным народом, в толпе и Тихон с матерью. За сценой слышен крик: «Женщина в воду бросилась!» Тихон порывается бежать к ней, но мать его не пускает со словами: «Прокляну, коли пойдешь!» Тихон падает на колени. Через некоторое время Кулигин вносит тело Катерины. «Вот вам ваша Катерина. Делайте с ней, что хотите! Тело ее здесь, возьмите его; а душа теперь не ваша; она теперь перед судией, который милосерднее вас!»
Бросаясь к Катерине, Тихон обвиняет мать: «Маменька, вы ее погубили!» и, не обращая внимания на грозные окрики Кабанихи, падает на труп жены. «Хорошо тебе, Катя! А я-то зачем остался жить на свете да мучиться!» – этими словами Тихона завершается пьеса.