В течение дня битва не могла определить победителя, и неоднократно казалось, что чаша весов склоняется в пользу то одной, то другой стороны. Вечером исход сражения решил удар византийских клибанариев (тяжелая конница) по левому флангу русской пехоты (кавалерии в русских войсках не было). Русичи не выдержали удара и отступили, укрывшись за стенами Преславы. Находившийся в это время в городе Калокир, опасаясь, что в случае плена ему не простят измену, ночью тайно покинул город.
Утром следующего дня (это был Великий Четверг) ромеи пошли на приступ. Пока основная часть войска штурмовала стены, отдельный отряд прорвался сквозь крепостные ворота. Это решило судьбу города. Отступая перед превосходящими силами, руско-болгарские воины закрылись в царском дворце. Взять его сходу византийцы не смогли. Дворец подожгли, и его защитники вынуждены были с боями пробиваться из окружения. Им навстречу вышел Варда Склир. Прорываясь к выходу из города, русы не проявили ни одного случая трусости, и большинство из них вместе с болгарскими союзниками погибло. Сфенкелу вместе с немногочисленными уцелевшими удалось-таки пройти сквозь византийские порядки и взять курс на Доростол.
Занятие Цимисхием Преславы сильно изменило расстановку сил. Русы и болгары понесли значительные потери. В византийский плен попал болгарский царь Борис, на момент штурма пребывавший в столице. Видя, что преимущество в войне за византийцами, болгары начали массово выражать преданность Константинополю. В Доростоле, чтобы пресечь подобные тенденции, Святослав казнил или посадил в заключение бояр, заподозренных в симпатиях к Византии (всего около трехсот человек). Этот ход несколько стабилизировал ситуацию в городе, но никак не добавил русскому князю симпатии в глазах местного населения.
После короткого отдыха Цимисхий повел армию от Преславы к Доростолу. Авангард его войска был встречен союзниками и перебит. Трупы погибших русы оставили на пути следования основных имперских сил как предупреждение об ожидаемой участи.
Под Доростол император Иоанн пришел 23 апреля. Сценарий сражения напоминал бой под Преславой. Греки наступали сложным построением, в центре которого находилась пехота, на флангах — клибанарии, а за пехотой лучники и пращники, атаковавшие противника через головы своих передних шеренг. Так же, как и под Преславой, судьба сражения решилась только к вечеру, когда удар византийской конницы сломил русскую фалангу.
Следующий день прошел мирно. Обе стороны зализывали раны. Император приказал на холме перед городом разбить лагерь, укрепленный рвом и валом, на гребне которого выставили щиты и копья, образуя таким образом дополнительную полосу препятствий для наступающих.
Боевые действия днем 25 апреля ограничились перестрелкой, а вечером того же числа русичи сделали попытку штурмовать вражеские позиции. Византийский хронист Лев Диакон, неоднократно упоминавший неспособность русов к конному бою, пишет, что в этот раз они сделали первую попытку кавалерийской атаки. Но отсутствие практики подобного рода сказалось, и русский натиск разбился о контратаку греческой конницы.
В очередной раз отступив, русы закрылись в Доростоле. Тем временем к Доростолу по Дунаю подошли византийские корабли, в т. ч., и огненосные. Таким образом водный путь из города оказался перекрыт. В еще одном полевом сражении 26 апреля погиб Сфенкел (часть историков готовы предполагать лишь тяжелое ранение). Кто победил в этот раз — неясно. С одной стороны, Диакон сообщает, что русы отступили. Но другой хронист, Георгий Кедрин, утверждает, что они до позднего вечера находились на равнине перед городом — т. е., поле боя осталось за ними. Напрашивается подозрение, что несмотря на все попытки византийских историков представить битвы первых четырех дней доростольской осады как яркие примеры славы ромейского оружия, реальный перевес Иоанна Цимисхия оказался явно недостаточным, чтобы сходу разбить противника. Во всяком случае, ни одна из этих побед не имела своим продолжением попыток ворваться в город на плечах отступающего врага.
Осада затягивалась. К грекам подошли обозы с осадной техникой. Для ее нейтрализации вокруг Доростола русичи вырыли еще один ров. В течение следующих полутора месяцев военные действия велись вяло. Фиксируются постоянные обстрелы города камнеметной артиллерией. Русские совершали периодические вылазки. Во время одной из них был убит командовавший осадными орудиями Иоанн Куркуас (19 июля), в бою на следующий день погиб русский военачальник Икмор.
Ночью с 20 на 21 июля русичи устроили масштабную тризну в память погибших соратников, после чего Святослав собрал военный совет. Встал вопрос о целесообразности продолжения боевых действий. Нехватка провизии и голод делали дальнейшую оборону Доростола невозможной.
Сухопутные и водные пути к отступлению перекрыты противником. Было принято решение дать последний бой, чтобы либо победить, либо умереть с честью.