К 5 августа 1941 г. войска Южного фронта, ведя кровопролитные оборонительные бои, отступили, и части 4-й румынской армии под командованием генерала Н. Чуперка практически блокировали Одессу на суше. Оборона города была возложена на Отдельную Приморскую армию под командованием генерал-лейтенанта Г. Софронова и корабли Черноморского флота. Ожесточенное сопротивление советских войск, получивших приказ Ставки Верховного Главнокомандования любой ценой отстоять Одессу, растянуло штурм города почти на три месяца.
После упорных боев к 19 августа войска Приморской армии отошли на передовой оборонительный рубеж, находившийся в 20—25 км от города Одесса, и задержали дальнейшее продвижение румынских частей. Фланги этого рубежа, строительство которого было закончено лишь в ходе обороны, упирались в естественные преграды — Днестровский и Аджалыкский лиманы, прикрывавшиеся огнем корабельной артиллерии. Второй, или основной, оборонительный рубеж был создан в 15 км от города, третий создавался почти на линии городской черты. Кроме трех оборонительных рубежей, окружающих город, на его улицах также было сооружено около 250 баррикад.
К 20 августа румынские войска прорвали советскую оборону в Восточном секторе между Куяльницким лиманом и побережьем Черного моря. Благодаря этому противник получил возможность систематически обстреливать из орудий город и часть побережья.
По распоряжению Ставки ВГК в ночь на 1 сентября в Одессу были перевезены с Кавказа десять батальонов. Полученные подкрепления позволили командованию Одесского оборонительного района, во взаимодействии с Черноморским флотом, начать операцию по возвращению утраченных позиций. 22 сентября 1941 г. по прорвавшейся в Восточном секторе группировке румынских войск был нанесен комбинированный удар.
Одним из ярких событий обороны Одессы стал так называемый Григорьевский десант, который являлся первым морским десантом ВМФ СССР на Черном море. Ночью 22 сентября 1941 г. в районе населенного пункта Григорьевка отряд кораблей Черноморского флота высадил десант в составе полка морской пехоты для содействия войскам, оборонявшим Одессу. В результате согласованных действий войск Приморской армии и десанта, поддержанных корабельной и береговой артиллерией, а также авиацией Черноморского флота, противник был отброшен от Одессы на 5—8 км, его потери составили около 2 тыс. человек убитыми и около 4 тыс. ранеными. В ходе операции советские войска захватили около 50 орудий и минометов и до 130 пулеметов.
К концу сентября в результате успешного наступления частей группы армий «Юг» в направлении на Донбасс и Крым резко ухудшилось положение войск Южного фронта. 30 сентября Ставка приняла решение направить войска, обороняющие Одессу, на усиление армий, находящихся в Крыму. С 1 по 16 октября 1941 г. Черноморский флот провел операцию по эвакуации войск на Крымский полуостров. За эти дни на транспортных и боевых кораблях было перевезено около 86 тыс. солдат и офицеров и до 15 тыс. гражданских лиц. Вечером 16 октября румынские части заняли Одессу. По сведениям советского командования за дни штурма города румынские войска потеряли около 160 тыс. солдат и офицеров, 200 самолетов, до 100 танков.
22 декабря 1942 г. Указом Президиума Верховного Совета СССР была учреждена медаль «За оборону Одессы». Медалью награждались все участники обороны Одессы в период 5 августа — 16 октября 1941 г. — военнослужащие Красной армии, Военно-морского флота и войск НКВД, а также лица из гражданского населения, принимавшие непосредственное участие в обороне. Всего этой медалью было награждено около 30,5 тыс. человек.