Скобелев со штабом наблюдал за продвижением противника с донжона. Фаланга полчаса мерным шагом продвигалась к крепости, постепенно уплотняя ряды. Чувствовалось жесткое руководство войском. Через каждый десяток ополченцев в шеренгах вышагивали полностью одоспешенные дружинники. В километре от стен интервал между воинами в шеренге уменьшился до 1 метра. Интервал между шеренгами по-прежнему составлял 5 — 6 метров. Дружинные полки с баллистами и пороками следовали вплотную за фалангой. Предоставив самой передней шеренге фаланги зайти за километровую отметку на пару сотен метров, Скобелев приказал начать.
Вверх одновременно взлетели три красных ракеты. Морские пушки ударили шрапнелью по холму с Великокняжеским штандартом. Четыре снаряда разорвались точно над холмом с княжескими шатрами. По холму сверху ударили более тысячи шрапнельных пуль. После разрыва шрапнели на холме среди шатров не было заметно никакого движения. Затем, артиллеристы перенесли огонь на стоящее под холмом каре кавалерии. Каждые 10 секунд орудия давали залп. После шестого залпа кавалеристы из каре бросились врассыпную. Те, кто уцелел.
Полевые нарезные пушки с башен ударили шрапнелью по трем полкам дружинников. По каждому полку били 4 пушки. По полтысяче пуль в залпе. Первый залп дали по княжеским стягам. Под ними ехали на конях князья с ближниками и телохранителями. Полки выдержали от 10 до 13 залпов, затем дружинники побежали, бросив раненых, пороки и баллисты. По полю носились обезумевшие от грохота разрывов лошади.
По пехотной фаланге ударили гранатами одновременно 48 орудий. Мортиры до фаланг не доставали. После первого залпа пушек десятники, не давая ополченцам опомниться после разрывов, криками и пинками погнали фалангу вперед. Ополченцы в фаланге, понукаемые десятниками и сотниками, перешли с шага на бег. А артиллеристы перешли на беглый огонь в максимальном темпе. Шрапнель по пехоте не применяли. Только гранаты. Целью было не перебить максимум ополченцев, а напугать их и разогнать. Поле заволокло дымом от выстрелов и разрывов. Артиллеристы постепенно снижали прицел орудий, чтобы фаланга не вышла из под обстрела.
Разрывы гранат своим грохотом, вспышками огня и разящими насмерть осколками устрашили пехотинцев. К обстрелу присоединились стрелки со стены. Передние шеренги были выбиты полностью. Через две минуты обстрела фаланга дрогнула, остановилась, затем развернулась и в панике побежала, бросая щиты и копья.
Все поле перед крепостью, испятнанное воронками разрывов, было завалено убитыми, вопящими и стонущими ранеными. Многие тела были разорваны в клочья.
С первыми залпами орудий ширванские конные полки вброд перешли Стрежень и Белоус, и, развернувшись в цепь, поскакали навстречу удирающим княжеским дружинникам. Дружинники были до смерти напуганы, многие из них получили ранения. Увидев несущуюся навстречу лаву ширванцев, большая часть дружинников предпочли сдаться. Не сдавшихся порубили. Оружие и доспехи у ширванцев были лучше. Ополченцы сдавались сразу, только завидев ширванских конников. Всех уцелевших при артобстреле рюриковичей порубили тоже. За головы рюриковичей Скобелевым была объявлена специальная награда — сотня динаров.
Пехотные полки разобрали рогатки и пошли зачищать поле битвы. Тяжело раненых добивали. Контуженных и легко раненых собирали в батальонные медицинские пункты, где фельдшера проводили первичную обработку ран. Затем их доставляли в полковые лазареты, где врачи зашивали раны. Для продолжения лечения был развернут полевой госпиталь. Контуженных и сдавшихся в плен собирали вблизи города в Елецком монастыре. Оружие и доспехи складировали в поле для последующей сортировки.
Пароходы, стоявшие в Десне выше города с заранее разведенными парами, вышли в Десну и полным ходом пошли к стоянке ладей, на которых пришли княжеские войска. Они успели подойти к стоянке раньше, чем весть о разгроме дошла до охраны ладей. Почти тысяча ладей была захвачена. Лишь пару десятков ладей, попытавшихся сбежать, затопили пушечным огнем.
Победа войск Ширвана была полной. Все войска князей разгромлены, причем, практически без потерь. Все князья — рюриковичи и большая часть бояр погибли. В плен были взяты 2100 дружинников и 13 тысяч ополченцев. Дружинников привели к присяге Царю Ширвана. Тех, кто отказался присягать, оставили под стражей для отправки в Ширван. Таковых оказалось лишь три сотни.
Войска разбирали трофеи три дня. Оружие и доспехи сортировали на три категории: годные для использования, в ремонт и на переплавку. Осколки гранат повреждали доспехи очень сильно. Местные жители два дня свозили на телегах убитых в овраги и хоронили в братских могилах. С этим делом следовало торопиться, поскольку на летней жаре уже началось разложение трупов. Потом очищали поля от частей тел и засыпали воронки. Значительная часть урожая на этих полях была утрачена. Однако, захваченный обоз с лихвой компенсировал эти потери. Кроме того, было взято около четырех тысяч хороших лошадей и почти тысяча ладей.