До полудня противники стояли в готовности напротив друг друга. В полдень русы, не дожидаясь более атаки ромеев, ринулись вперед, оглашая окрестности раскатистым громовым кличем. В начале боя ромеи сумели сдержать натиск и в ряде пунктов прорваться сквозь плотную массу воинов Святослава, но он быстро перегруппировал свои силы. Теперь русы встречали контратаки сплошной стеной щитов. Более часа ожесточенный бой велся с переменным успехом, потом обе стороны отошли назад, чтобы подготовиться к новой схватке. Вскоре сражение возобновилось, и снова византийцы остановили славян, даже сумев несколько их потеснить, но ни расстроить, ни прорвать их линию не удалось. Очевидец событий, Лев Диакон, служивший в императорском штабе во время похода, пишет, что русы, имевшие славу непобедимых, не могли уступить поле боя, считая это личным позором для каждого воина, а ромеи не желали признать поражение от варваров, которые, по собственному выражению Льва, не могли даже коня оседлать. До вечера исход сражения оставался нерешенным, до тех пор, пока император не приказал тяжелой коннице атаковать на обоих флангах, а пехоте — усилить натиск в центре. Громкими боевыми криками по всей линии подбадривали ромеи своих латников, пока два бронированных клина не врубились в стену славянских щитов. Оба фланга были смяты и прижаты к центру. Всего за несколько минут фронт русов, прорванный на многих участках, полностью разрушился, и воины бросились обратно в крепость, чтобы успеть спастись прежде, чем их догонят преследователи или закроются ворота.
Император приказал сыграть сбор, и, как вспоминает Лев, солдаты возвращались в лагерь с победными песнями. Место для лагеря было выбрано в низине, на некотором расстоянии от крепости. Он был укреплен рвом и земляным валом, на котором густым частоколом установили копья и колья, развесив на них щиты. Лев Диакон обращает внимание, что это было обычной практикой организации ромейского лагеря во враждебной стране.
На следующий день имперские отряды приблизились к крепости и провели разведку боем некоторых фортов, но были встречены градом стрел и камней. В ходе перестрелки ни одна из сторон не понесла ощутимого урона, и византийцы отступили к лагерю, оставив крепость под постоянным наблюдением. К вечеру русы сделали вылазку, чтобы отогнать ромейские пикеты. Диакон пишет, что это был первый случай, когда славян увидели верхом. Но их неопытность в конном бою вскоре сказалась, и ромейская конница легко отбросила их обратно, в Доростол.
На этой стадии император, кажется, не хотел вести слишком жесткую осаду, а скорее пробовал выманить русов в поле, предпочитая победить в открытом сражении, а не штурмовать неприступные стены и башни крепости или брать ее измором.
Но Иоанн подготовился к любому развитию событий. На третий день осады Доростола к крепости подошел сильный византийский флот, доставивший припасы и подкрепления. Многие корабли были оборудованы машинами, извергающими греческий огонь. Средневековый напалм, выбрасывавшийся из труб, установленных на бортах судов, был уже известен русам. Именно этим оружием тридцатью годами ранее были сожжены корабли отца Святослава, Игоря. Прибытие флота, запершего славян на южном берегу Дуная, лишило их последнего шанса вырваться. Бурное ликование приободрившихся по этому поводу ромеев, очевидно, не способствовало подъему духа в рядах осажденных.
На следующий день Святослав в надежде разбить неприятеля снова вывел свою дружину в поле. И снова битва не выявила победителя, пока византийские тяжелые конники со своими убийственными булавами не опрокинули русов и не заставили их, сначала в порядке, а потом врассыпную, искать защиты за крепостными стенами.
Император приказал начать правильные осадные работы и установить метательные машины на валах вокруг города. На головы защитников непрерывной лавиной обрушились камни и стрелы, вызывая серьезные потери и упадок духа. Чтобы вывести эти орудия из строя, славянам приходилось предпринимать ночные вылазки. Во время одной из них сторожевой пост ромеев был захвачен врасплох и его начальник, Иоанн Куркуас, который, как сообщается, был мертвецки пьян, погиб. Этот Куркуас на всю армию славился богатством своего гардероба, и убивший его рус принял щеголя по одежде за императора. Он поднял отрубленную голову на копье и дразнил ромеев, хотя и без того эффекта, на который надеялся. Осадные машины остались неповрежденными и продолжали вести смертоносный огонь.