23 апреля под Доростолом состоялось первое столкновение передового отряда византийцев с небольшим русским отрядом (в результате которого почти полностью погибли оба отряда), но главная битва была еще впереди.
Святослав в этот же день встретил противника на ближних подступах к Доростолу и выстроил свое войско в сомкнутом боевом строю. Согласно описанию византийцев, сомкнутые щиты и копья образовывали стену, атаковать которую было крайне трудно. В свою очередь, Иоанн Цимисхий выстроил свою армию в две линии: в первой находились тяжеловооруженная кавалерия, а во второй – лучники и пращники, проводившие обстрел русских войск через первую линию.
Византийцы рассчитывали, что русские воины не выдержат атаки конницы и их «стена» будет прорвана, но она оказалась значительно устойчивее, чем они могли предположить. Всего византийцы провели двенадцать атак, но так и не смогли прорвать сомкнутый строй. Единственным результатом этих атак было то, что воины Святослава организованно отступили за стены крепости.
После безрезультатного боя на следующий день Иоанн Цимисхий выстроил под Доростолом укрепленный лагерь с окружающими его глубоким рвом и земляным валом. 25 апреля к Доростолу подошел византийский флот, что означало начало полной блокады крепости. Вечером Святослав вывел из города свою конницу, но византийцы не решились ее атаковать (сам князь тоже не решился перейти в наступление), и бой не состоялся.
На следующий день под стенами крепости произошло новое крупное сражение. На этот раз, как и в первом бою, Святослав вывел тяжеловооруженных пеших воинов, которые были атакованы византийцами. Ожесточенный бой продолжался еще два дня, и в нем погиб Сфенкел. В конечном итоге русское войско было вынуждено отступить после того, как обозначилась реальная угроза захода в его тыл специально посланного императором отряда.
После закончившегося сражения, которое не принесло ему победы, Святослав дал команду выкопать вокруг крепости ров, что не давало возможности византийцам подойти непосредственно под стены и использовать их многочисленные стенобитные и камнеметные машины.
29 апреля Святослав совершенно неожиданно для противника провел вылазку из крепости в направлении Дуная, в ходе которой захватил большое количество продовольствия (что и дало ему возможность выдерживать последующую осаду) и разгромил захваченный врасплох вражеский отряд.
Далее началась длительная осада, и в конце концов византийцы сумели засыпать часть рва вокруг крепости и придвинуть вплотную стенобитные и камнеметные машины, использование которых сделало падение Доростола вопросом ближайшего времени. Это вынудило Святослава 19 июля выйти из крепости, чтобы попытаться уничтожить машины. Время для диверсионной вылазки было выбрано отнюдь не случайно. За время длительной осады русские воины прекрасно изучили