Заложена на заводе № 189 в Ленинграде 30 сентября (по другим данным 10 июня или в августе) 1938 года под строительным номером 303. Спущена на воду 30 июля (по другим данным в июне или 14 июля) 1940 года. Начало Великой Отечественной войны подводная лодка встретила под командованием капитан-лейтенанта Куликова Николая Николаевича в составе 14-го дивизиона (дивизион строящихся и капитально ремонтирующихся кораблей) учебной бригады ПЛ в Ленинграде у заводской стенки в стадии достройки. Степень технической готовности корабля на 1 июля 1941 года составляла 74%. По другим данным на 9 июня объем выполненных работ на подводной лодке составляла 60%. На субмарине предстояло установить главные двигатели, аккумуляторную батарею и вооружение. В августе 1941 года работы на подводной лодке были приостановлены, а часть экипажа во главе с командиром была обращена на формирование морской пехоты. (Капитан-лейтенант Куликов погиб на сухопутном фронте в боях под Ленинградом).
    В августе 1941 года командиром корабля назначен Афонин Валентин Дмитриевич, а в октябре – капитан 3 ранга (впоследствии капитан 2 ранга) Могилевский Сергей Сергеевич. Экипаж был сформирован заново, а строительные работы возобновлены. Наряду с заводскими рабочими экипаж широко привлекался к строительным работам. Заводским строителем «Л-21» был инженер В.Н. Строганов, старшим мастером – В.И. Мармель. Установкой на фундаменты дизелей и отлаживанием их работы занимались шеф-монтажники И.В. Беляев и В.М. Комолов. В их распоряжение были выделены мотористы-подводники. Работой моряков-электриков, монтировавших аккумуляторную батарею, руководил мичман А.О. Московин. Чтобы ускорить ввод корабля в строй, на нем был введен круглосуточный график работы.
    Строительство подводной лодки проходило в крайне тяжелых условиях блокадного города. Немцы систематически подвергали артобстрелу город, заводы, корабли. 24 мая 1942 года почти готовая подводная лодка получила прямое попадание одного из снарядов. Снаряд разорвался при ударе о прочный корпус в районе дизельного отсека, сделав пробоину 2 х 1,5м. Вода затопила V, VI, VII и VIII, отсеки: субмарина легла на грунт с креном 25° и дифферентом на нос до 8°. Только 8 июня она была поднята на поверхность и поставлена на ровный киль. Многие работы пришлось производить заново. Наиболее сложным стал ремонт правого дизеля с наложением стальной заплаты на пробитый блок цилиндров.
Схема положения подводной лодки «Л-21» после попадания снаряда 24 мая 1942 г.
Подводная лодка «Л-21» в блокадном Ленинграде.
Подводная лодка «Л-21» Тосмаре, Лиепая. 1945 - 1949 г.
Благодарственная грамота за подписью командира «Л-21» С.С. Могилевского.
Шведское судно «Ганза» торпедированное «Л-21» 24 ноября 1944 г.
    7 августа 1943 года «Л-21» вошла в строй и 31 августа 1943 года вошла в состав Краснознаменного Балтийского флота. Остаток 1943 года экипаж подводной лодки занимался отработкой задач боевой подготовки. В мае 1944 года подводная лодка встала на ремонт линий валов на заводе № 189.
    30 октября 1944 года «Л-21» перешла из Кронштадта в Хельсинки, откуда через пролив Юнгфрундзунд вышла в район севернее маяка Стило (позиция № 6). Утром 13 ноября подводная лодка приступила к патрулированию указанного района. Днем 14 ноября ее атаковали немецкие корабли, отчего на субмарине временно вышли из строя кормовые горизонтальные рули. Вскоре подводная лодка обнаружила крейсер «Нюрнберг», но не смогла атаковать его из-за невыгодного курсового угла, большого расстояния и высокой скорости цели. Наконец, утром 17 ноября подводная лодка выполнила свою первую торпедную атаку. В 40 милях северо-западнее маяка Стило она выпустила три торпеды по рыболовному траулеру или тральщику, приняв его за транспорт в 1.000 – 1.500 т. Малая осадка цели стала для нее спасительным фактором. Торпеды прошли под судном. Противник не комментирует факт атаки. 21 ноября «Л-21» перешла в район банки Штольпе, где в 2,5 милях от берега в точке 54°51' с.ш./17°58'7 в.д. выставила одной банкой 16 мин (минный интервал 90 м, углубление 2,5 м). Семнадцатая мина из левой трубы не вышла, так как скоба соединения минрепа с якорем попала под ролик минного устройства. Вытолкнуть мину и закрыть крышку минной трубы не удалось. Теперь застрявшая мина представляла угрозу для самой лодки, поэтому командир решил возвращаться в базу. Через полчаса после того как постановка была завершена, в направлении минного заграждения на подводной лодке услышали эхо сильного взрыва. Мины подлодки «нашел» германский транспорт «Эйхберг» (1923 брт), который был вынужден выброситься на отмель. Спустя два дня гостинцы «Л-21» отправили на дно латский пароход «Элие» (1873 брт) и повредили проводящий тральные работы сторожевик «Vs-302». Заграждение было окончательно вытралено 1-4 декабря кораблями 26-й флотилии тральщиков и 2-й охранно-строжевой флотилии немцев. Погибший в этом районе 22 декабря германский пароход «Эберхард» (751 брт), вероятнее всего подорвался на британской донной мине. На обратном пути утром 24 ноября в 18 милях западнее маяка Халльскук (северная оконечность Гогланда) «Л-21» потопила шведское судно «Ганза» (493 брт), принадлежавшее пароходству «АБ Готланд» и шедшее из Ньюнесхамна в Висбю. Из трех выпущенных торпед две попали в цель. Судно разломилось и моментально пошло ко дну. Из 85 пассажиров и членов экипажа удалось спастись лишь двоим. Проходивший мимо шведский вспомогательный крейсер «№ 4» «Вариа» не принял мер к спасению терпящих бедствие, и, опасаясь повторной атаки подводной лодки, предпочел уйти. Неожиданно обнаружив еще один корабль, субмарина погрузилась и также покинула место катастрофы. Уже на подходе к маяку Чекарсэрн, где подводную лодку ждал «БТЩ-217», чтобы сопроводить ее в Турку, по вине личного состава при спуске людей из ходовой рубки в результате случайного касания автомата торпедной стрельбы «Л-21» выпустила две торпеды из кормовых торпедных аппаратов. Утром 26 ноября «Л-21» прибыла в Турку, где мину наконец-то извлекли из трубы.
    Спустя два дня подводная лодка вышла в район севернее маяка Стило (позиция № 6) и утром 1 декабря прибыла в указанный район. 3-4 декабря «Л-21» произвела поиск вдоль восточного и южного побережья острова Эланд, после чего до 6 декабря находилась в районе между островом Эланд и банкой Штольпе. С 6 декабря субмарина вела поиск судов противника в районе восточнее маяка Штольпемюнде.
    16 декабря «Л-21» прибыла к побережью полуострова Хель, где попыталась выставить четыре оставшихся мины. Постановка не удалась ввиду поломки ролика минной тележки одной из мин. Продолжая патрулирование, в ночь на 22 декабря подводная лодка предприняла попытку перехватить конвой противника по данным авиаразведки шедший из Либавы в Пиллау. Конвой, состоящий из судов «Эйфель», «Элла Хорн», «Луиза Шрёдер», «Зюйдзее» и «Вейсель», в сопровождении плавбатарей «Полярис» и «Нинбург» был обнаружен, но при попытке сблизиться с ним, субмарина была отогнана сторожевым кораблем «V-315». 22 декабря «Л-21» начала возвращение в базу, и вечером 25 декабря она прибыла на Ханко.
    Вскоре «Л-21» перешла в Турку, где встала на межпоходовыый ремонт с заменой аккумуляторной батареи, который продлился до 5 марта 1945 года.
    Завершив ремонтные работы, подводная лодка утром 5 марта вышла в район восточнее банки Штольпе (позиция № 4). Обеспечивал поход командир 1-го дивизиона ПЛ капитан 1 ранга А.Е.Орел. Утром 8 марта выяснилось, что на подлодке вышли из строя кормовые горизонтальные рули. В таких условиях продолжать поход было невозможно, но было решено провести необходимые работы в море. Для этого требовалось перенести в корму привод носовых рулей, которые остались закрепленными в нейтральном положении. Так как механизмы не являлись взаимозаменяемыми, для установки привода на новом месте пришлось срубать участок фунтдамента. За 13 часов тяжелых работ корабль был приведен в боеспособное состояние.
    Днем 13 марта у побережья полуострова Хель «Л-21» выставила минное заграждение (20 мин одной банкой, минный интервал 90 м, углубление 2,5 м в точке 54°35'5 с.ш./18°52' в.д.). Необходимо отметить, что видимость непосредственно перед минной постановкой настолько ухудшилась, что командиру подводной лодки пришлось определять свое место по глубинам. Поэтому возможно, что координаты минного заграждения несколько отличны от заявленного. Результатом минной постановки «Л-21» считается гибель миноносцев «Т-3» и «Т-5» 14 марта (54°39' с.ш./ 18°47' в.д.). Вероятно, на этих минах погибла немецкая субмарина «U-367», которая числится пропавшей без вести с 15 марта 1945 года. Возможно, подводная лодка погибла по другим причинам, но в середине 90-х годов в районе минной постановки «Л-21» на глубине 47 м обнаружен остов немецкой подводной лодки VII-C типа. Корпус находки на три четверти занесен песком, поэтому тактический номер найденной подводной лодки не известен. Нельзя с полной увереностью утверждать, что причиной повреждения германского эсминца «Z-43» 10 апреля 1945 года стал подрыв на мине «Л-21». Точные координаты подрыва неизвестны. Нужно отметить, что этот район активно минировался британской авиацией. Известно только, что небоеспособный «Z-43» был затоплен экипажем 3 мая 1945 года в бухте Гелтингер.
    15 марта «Л-21» перешла к банке Штольпе. Вечером 18 марта северо-западнее маяка Риксгафт «Л-21» тремя торпедами атаковала судно из состава конвоя. Торпеды прошли мимо цели. Спустя полчаса подводная лодка выпустила три торпеды по второму проходящему конвою и опять не добилась результата.
    В ночь на 23 марта субмарина сумела перехватить конвой идущий из Либавы. Утром 23 марта «Л-21» из надводного положения выпустила три торпеды по одному из судов и наблюдала попадание двух из них. Результатом атаки подводной лодки стала гибель сторожевого корабля «V-2022» (бывший рыболовный траулер «Эмиль Кольсман»). На нем погибло 76 человек. Корабли эскорта 6 часов преследовали подводную лодку, но она благополучно сумела уйти.
    В ночь на 24 марта в точке 55°10'6 с.ш./17°36' в.д. «Л-21» тремя торпедами из надводного положения произвела атаку по танкеру из состава конвоя. Через три минуты на субмарине услышали два взрыва и наблюдали большую шапку дыма. По немецким данным атакованный конвой, лидировавшийся эскортным кораблем «F-8», потерь не понес. Подводная лодка уклонилась от преследования и на большой скорости покинула место боевого столкновения. Часто упоминающиеся в качестве жертвы этой атаки «Л-21» буксир «Эрни» благополучно пережил войну.
    Днем 25 марта «Л-21» в точке 55°11' с.ш./17°06'8 в.д. атаковала транспорт, по оценке командира субмарины, паровую яхту из состава конвоя. Вскоре после пуска торпед на подводной лодке были слышны взрывы, и наблюдалось судно с дифферентом на корму. Возможно, целью атаки подлодки стала легкая плавбатарея LAT-7 («Гретель») затонувшая от попадания торпеды. После атаки «Л-21» до утра 26 марта безрезультатно преследовалась силами ПЛО противника. Субмарина сумела уйти, и в ночь на 27 марта начала возвращение в базу. Днем 29 марта «Л-21» прибыла в Турку.
    В апреле 1945 года «Л-21» встала в док для проведения межпоходового ремонта. Здесь ее встретило известие об окончании войны в Европе.
    С 18 мая по 16 июня 1945 года «Л-21» патрулировала в районе южнее острова Борнхольм. На этом война для нее закончилась.
    29 декабря 1955 года «Л-21» исключена из состава ВМФ в связи с разоружением и сдачей на слом.
3 боевых похода
10.11.1944 – 26.11.1944
28.11.1944 – 26.12.1944
05.03.1945 – 29.03.1945
    7 торпедных атак с выпуском 21 торпеды. Еще две торпеды потеряны при несанкционированном пуске. Потоплены 1 судно (493 брт) и 2 корабля.
24.11.1944 ТР «Ганза» (493 брт)
23.03.1945 СКР «V-2022» (бывший рыболовный траулер «Эмиль Кольсман»)
25.03.1945 ПБ LAT-7 («Гретель»)
    2 минных постановки (выставлено 36 мин) на которых погибли 1 судно (1.873 брт), 2 миноносца. 1 судно и 1 корабль повреждены. Возможно, на минах «Л-21» погибла 1 подводная лодка.
22.11.1944 ТР «Эйхберг» (1.923 брт) – поврежден.
24.11.1944 СКР «Vs-302» – поврежден.
24.11.1944 ТР «Элие» (1.873 брт)
14.03.1945 Мц «Т-3»
14.03.1945 Мц «Т-5»
15.03.1945 ПЛ «U-367» – предположительно.