28 марта диспозиция английской эскадры была следующей: к югу от острова Крит маневрировала группа из четырех легких крейсеров и эсминцев, ожидая подхода главных сил (линкоров) из Александрии. Авианосец «Формидебл» и эсминцы охранения вышли из Александрии несколько позже и составляли арьергард. Утром, около 7 часов, противники обнаружили друг друга. (На этот раз разведывательные самолеты англичан и итальянцев выполнили свою функцию.) В 7 час. 40 мин. итальянские тяжелые крейсера и передовой отряд английских крейсеров увидели друг друга и спустя полчаса, сократив дистанцию, открыли огонь. Преимущество было на стороне итальянцев (калибр их артиллерии — 203 мм — превосходил английский — 152 мм), и англичане начали отходить к своим линкорам. Бой на отходе продолжался около 40 минут на дистанции 120—130 кабельтовых без видимого результата. Английские снаряды ложились с недолетом, а итальянские из‑за устаревших дальномеров и низкой подготовки артиллеристов были весьма неточны. Примерно равная скорость кораблей не позволяла сократить дистанцию, и итальянцы легли на обратный курс. В ответ английские крейсера начали преследовать итальянские, но наскочили на линкор «Витторио Венето», открывший по ним огонь с дистанции в 125 кабельтовых. Один из снарядов разорвался у борта крейсера «Орион», нанеся ему легкие повреждения, после чего английские крейсера, прикрывшись дымовой завесой, отошли к своим главным силам. На этом дневной артиллерийский бой и закончился. Английская авианосная авиация атаковала итальянский линкор, но результатов не добилась, после чего весь итальянский отряд начал отход на северо–запад, в свои базы. Преимущество в скорости итальянских кораблей привело к тому, что дистанция между эскадрами увеличилась до 60 миль. В прежние времена это привело бы к прекращению боевых действий, однако англичане располагали палубной авиацией, а также самолетами, базирующимися на острове Крит. Эти самолеты и решили в конечном итоге судьбу боя. Первые две атаки самолетов в 14 час. 20 мин. и 14 час. 50 мин. успехов не принесли, и попаданий в итальянские корабли не было. Следующая атака в 15 час. 10 мин. была результативной — одна из торпед попала в линкор в район винтов. «Витторио Венето» получил тяжелые повреждения, полностью потерял ход и принял до 4000 т воды. Однако к вечеру ход линкора был восстановлен и достиг 19 узлов.
Выстроившись в ордер ПВО — линкор в центре, а крейсера и эсминцы по окружности, — итальянские корабли продолжали отступать. В свою очередь, английские самолеты возобновили атаки и достигли еще одного попадания торпеды, на этот раз в корму тяжелого крейсера «Пола». На корабле были затоплены котельное и машинное отделения. Корабль полностью лишился хода. На помощь поврежденному кораблю адмирал Якино отрядил два тяжелых крейсера — «Зара» и «Фиуме» — и четыре эсминца. Это привело к ночному бою, в результате которого итальянский флот понес большие потери. Поскольку скорость итальянской эскадры снизилась и дистанция сократилась, английский командующий приказал изготовиться к ночному бою. Английские линкоры, прикрываемые эсминцами, двигались в компактном строю. Впереди их шли четыре легких крейсера. Между итальянской и английской эскадрами находился поврежденный крейсер «Пола». Высланные ему на помощь крейсера готовились к буксировке поврежденного корабля, и даже их главная артиллерия не была изготовлена к бою. В 22 час. 25 мин. английские линкоры с помощью радиолокации обнаружили итальянские крейсера и открыли по ним огонь с дистанции 20—30 кабельтовых. Артиллерийская атака была внезапной и мощной настолько, что ни один из крейсеров не успел открыть ответный огонь. Буквально в течение нескольких минут они были полностью выведены из строя и потеряли ход. Итальянские эсминцы, пытаясь оказать противодействие, выпустили три торпеды по английским линкорам, но попаданий не достигли. В ответ английские линкоры открыли по ним огонь, и два эсминца были потоплены. Около полуночи тяжело поврежденный крейсер «Фиуме» перевернулся и затонул. Крейсер «Зара» в 2 час. 30 мин. был добит английским эсминцем. Во время боя английских линкоров и итальянских крейсеров поврежденный крейсер «Пола» находился в нескольких милях от места столкновения. Его команда не готовилась к бою и начала покидать корабль. Подошедший английский эсминец сделал по нему несколько выстрелов, но, поскольку ответного огня не последовало, обстрел был прекращен. Подошедшие корабли приняли с «Пола» пленных, и крейсер был потоплен торпедами.