В ответ на действия советских властей 3 марта 1921 года в крепости был образован «штаб обороны», который возглавил бывший капитан Е.Н. Соловьянинов. В состав штаба вошли «военные специалисты»: командующий артиллерией крепости, бывший генерал А.Р. Козловский, контр-адмирал С.Н. Дмитриев, офицер Генерального штаба царской армии Б.А. Арканников. В руках восставших оказалась главная база Балтийского флота (свыше 26 тысяч матросов и солдат, два линкора, до 140 орудий, около 100 пулеметов). Однако следует отметить, что в восстании участвовал не весь личный состав. В частности, 450 человек, отказавшиеся примкнуть к восстанию, были арестованы и заперты в трюме линкора «Петропавловск»; с оружием в руках на берег в полном составе ушла партийная школа и часть матросов-коммунистов, имелись и перебежчики (всего до начала штурма крепость покинули более 400 человек).
Советское руководство во главе с В.Лениным, уже вставшее на путь отказа от политики «военного коммунизма», решило подавить Кронштадтское восстание силой, так как видело главную опасность в политических требованиях кронштадтцев. 7 марта большевики стянули к Кронштадту войска. Силы 7-й армии насчитывали 17,6 тыс. красноармейцев. Основной ударной силой являлась сводная дивизия под командованием П.Е. Дыбенко. В 18:00 7 марта начался артобстрел Кронштадта.
В это время в Москве работал X съезд РКП(б)
(с 8 по 16 марта 1921 года). 7 марта, непосредственно перед намеченным на 8 марта открытием съезда, наркомвоенмор Троцкий Л.Д. и командующий 7-й армией Тухачевский М.Н. (около 18 тысяч человек) предприняли первую попытку штурма восставшего Кронштадта. Штурм, однако, оказался неудачным, до трех тысяч красных курсантов погибли из-за слабой подготовки и низкого морального уровня красноармейцев, многие из которых отказывались идти в бой против «братьев-кронштадтцев». Ненадежные части были расформированы, многие бойцы расстреляны «за отказ от выполнения боевого задания». Почти 300 делегатов съезда большевиков тоже были брошены для подавления восстания, в том числе Калинин и Ворошилов. К 16 марта численность 7-й армии достигла практически 45 тысяч человек.В ночь на 17 марта колонны красноармейцев под командованием М. Тухачевского пошли на очередной штурм. Из крепости били орудия и пулеметы. Лед трескался, нападавшие тонули десятками человек. Укрыться можно было лишь за трупами убитых, и ничто не могло сдержать яростный натиск атаковавших, ибо все понимали, что выжить, если удастся, можно только там, на острове. В десять часов утра 17 марта штурмовые отряды уже вели бой в городе. Мятежники защищались, на автомобилях перебрасывали отряды матросов, косивших из пулеметов штурмовые части. К пяти часам вечера атакующие были выбиты из города. И тогда М. Тухачевским был брошен на лед последний резерв штурма – конница, которая рубила опьяненных призраком победы матросов. Руководство Кронштадтского ревкома во главе с Петриченко еще в 5 часов утра 17 марта на автомобиле уехало по льду залива в Финляндию. Вслед за ними ринулась толпа простых матросов и солдат. К концу дня, узнав, что «вожди восстания» ушли в Финляндию, мятежники начали сдаваться. Победителей к этому времени на острове было меньше, чем побежденных, причем каждого десятого из них расстреливали тут же. К 12 часам 18 марта Кронштадтское восстание было подавлено.
Но 18 марта 1921 года штаб мятежников (который находился в одной из орудийных башен «Петропавловска») принял решение уничтожить линкоры (вместе с пленными, находившимися в трюмах) и прорываться в Финляндию. Они приказали заложить несколько пудов взрывчатки под орудийные башни, однако это распоряжение вызвало возмущение. На «Севастополе» старые матросы разоружили и арестовали мятежников, после чего выпустили из трюма коммунистов и радировали, что на корабле восстановлена советская власть. Некоторое время спустя после начала артиллерийского обстрела сдался и «Петропавловск» (который уже покинули большинство мятежников). Линкоры «Петропавловск» и «Севастополь» были сданы наступавшим войскам без боя.
Число павших в бою с той и с другой стороны неизвестно. По данным советских источников, штурмующие потеряли 527 человек убитыми и 3285 ранеными. В книге «Гриф секретности снят: потери вооруженных сил СССР в войнах, боевых действиях и военных конфликтах» (под ред. Г.Ф. Кривошеева) приводятся следующие советские потери при штурме Кронштадта: безвозвратные – 1912 чел., санитарные – 1208 чел., всего – 3120 человек. В то же время было убито 1 тыс. мятежников, свыше 2 тыс. было «ранено и захвачено в плен с оружием в руках», более 2 тыс. – сдались в плен и около 8 тысяч – ушли в Финляндию. Почти через четверть века Сталин вспомнил об этих людях и в 1944 году при заключении мира с Финляндией потребовал их выдачи. Степан Петриченко тоже попал в руки МГБ и умер в июне 1947 года по пути из Соликамского лагеря во Владимирскую тюрьму.