Когда летом 970 г. византийский император Иоанн Цимисхий и киевский князь Святослав заключили мир, боевые действия во Фракии прекратились. Святослав ушел в Восточную Болгарию, Иоанн вернулся в Константинополь. Положение Империи было очень сложным, в Малой Азии поднял восстание военачальник Варда Фока и базилевс отправил армию под командованием Варды Склира на подавление мятежа. Тем не менее мир со Святославом Цимисхий рассматривал как временную передышку, необходимую для накопления сил перед решающим столкновением. Но и Святослав не соблюдал мирный договор, его отряды регулярно совершали грабительские набеги на Македонию (7, 66). На активные действия киевского князя провоцировала бездеятельность и некомпетентность командующего имперскими войсками в Македонии Иоанна Куркуаса. Вместо того, чтобы готовить солдат к грядущей войне, Куркуас предавался пьянству и другим сомнительным удовольствиям, совершенно забросив обязанности полководца. Ситуация изменилась в ноябре месяце, когда был подавлен мятеж Варды Фоки и армия Склира вернулась на Балканы. По приказу императора армейские контингенты были расквартированы на зимовку в Македонии и Фракии, командующим было велено ежедневно устраивать учения и усиленно заниматься подготовкой войск. Наступление на Болгарию было намечено на начало весны, к этому времени Цимисхий должен был прибыть с гвардией в расположение армии и возглавить войска. Император развернул бурную деятельность, в окрестностях столицы были заготовлены огромные запасы продовольствия и воинского снаряжения. Будучи храбрым и умелым воином, Иоанн лично обучал гвардейцев. Большую роль в предстоящей кампании Цимисхий отводил флоту, по его замыслу корабли должны были заблокировать устье Дуная и не выпустить ладейный флот Святослава в море. Общее количество судов было доведено до 300 (7, 68), но главной ударной силой по-прежнему оставались огненосные дромоны.
Весной 971 г. Цимисхий отправил флот к устью Дуная, а сам прибыл в город Адрианополь, где собрал военный совет. По мнению императора, ключом к победе в войне был быстрый захват города Великий Преслав, столицы Болгарского царства. В городе находился сильный русский гарнизон под командованием воеводы Сфенкела, при котором в качестве советника состоял перешедший на сторону Святослава патрикий Калокир.
Штурм Великого Преслава. Миниатюра из «Истории» Иоанна Скилицы
Главная проблема Цимисхия заключалась в том, как перевести армию через горы Гем, больше всего базилевс опасался, что русские атакуют его войска во время перехода по узким ущельям (клисурам). Цимисхию было известно, что если эти горные проходы перекрыть, то порваться в Болгарию будет практически невозможно. Он не поверил, когда разведка донесла, что ущелья не охраняются вражескими отрядами, однако информация подтвердилась и император в начале апреля повел армию в Болгарию. Как пишет Лев Диакон, Цимисхий возглавил передовой отряд из 13 000 конницы и 15 000 тяжеловооруженных пехотинцев, остальная армия, метательные машины и обоз двигались следом, под командованием проедра Василия (7, 70). Иоанн Скилица приводит другие данные, по его информации передовой отряд состоял из 4000 всадников и 5000 легковооружённых воинов (7, 124). Ромеи беспрепятственно перешли через горы, вечером 11 апреля вышли на равнину и разбили лагерь на неприступном холме. Великий Преслав находился совсем рядом, но о том, что враг у ворот, в городе узнали только утром. Это свидетельствует о том, что Сфенкел и Калокир совершенно не уделяли внимания разведке и даже не озаботились выставить дозоры в клисурах.
Святослава застали врасплох, князь оказался совершенно не готов к войне, его войска были разбросаны по всей Восточной Болгарии. Мы не знаем, почему так произошло, но всё случившееся характеризует киевского князя не с самой лучшей стороны. Может быть, Святослава усыпила бездеятельность Иоанна Куркуаса или же князь надеялся, что Цимисхий не сможет так быстро подготовиться к войне. Можно предположить, что за оборону клисур отвечали Сфенкел и Калокир, иначе ничем другим не объяснишь, зачем в Преславе было сосредоточено 10 000 русских воинов. И если это так, то Сфенкел и Калокир проявили преступную халатность. Патрикий не мог не знать о стратегическом значении клисур и должен был любой ценой заставить воеводу перекрыть проходы в горах. В любом случае, главным виновником прорыва ромеев через горы является киевский князь, который как командующий несет полную ответственность за действия подчиненных. Беспечность Святослава обернулась катастрофой.
На рассвете 12 апреля Цимисхий повел армию на Великий Преслав, под пение труб и грохот барабанов ромеи двинулись в сторону города. Как обычно, император возглавил передовые отряды. Командующий русскими войсками воевода Сфенкел не ожидал нападения, для него появление ромеев оказалось совершенной неожиданностью. В это утро воевода вывел большую часть своих людей за город, где дружинники и ратники упражнялись во владении оружием. По свидетельству Скилицы, в маневрах приняло участие 8500 воинов (7, 124–125). Увидев вражеское войско, русские встали плечом к плечу, сдвинули большие щиты и приготовились к битве. Разыгралась ожесточенное сражение, дружинники Сфенкела отразили несколько вражеских атак и удержали позиции. Столкнувшись с яростным сопротивлением противника, Цимисхий ввел в бой гвардию «бессмертных». Тяжеловооруженные всадники мощной атакой смяли левый фланг русского войска и вынудили Сфенкела начать отход к Преславу. Вражеская конница обошла войско противника и отрезала дружинникам путь к городу. В это время ворота Преслава распахнулись, на помощь соотечественникам вышел отряд ратников и атаковал византийцев. Сфенкел воспользовался удобным моментом и повел рать на прорыв, отбиваясь от наседавших «бессмертных», русские пробились к городским воротам и укрылись за стенами Преслава. Вдохновленные успехом, ромеи пошли на штурм, но были отбиты с большими потерями. Ночь прекратила битву. Неудача в полевом сражении не смутила Сфенкела, он был готов продолжать борьбу за город. Патрикий Калокир думал иначе, он видел личный штандарт императора и осознал весь размер опасности. Ночью патрикий покинул Преслав и убежал в город Доростол, где находился Святослав.
Утром 13 апреля подошли главные силы имперской армии, подвезли осадные машины и Цимисхий объявил генеральный штурм Преслава. Метательные машины крушили городские стены и башни, каменные ядра сбивали защитников с боевых площадок. По приставным лестницам ромеи устремились на городские укрепления, дружинники стрелами, копьями и камнями поражали вражеских воинов, удерживая периметр укреплений. Исход противостояния решил численный перевес ромеев. Первым на городскую стену взобрался воин по имени Феодосий Месоникт (7, 71), следом поднялись его товарищи. На стенах и башнях Преслава закипели рукопашные схватки, ромеи пытались прорваться в город, русские сдерживали их натиск. Цимисхий постепенно вводил в бой свежие войска, византийцы спрыгивали со стен внутрь города и спешили к воротам. Сбив петли и открыв засовы, солдаты впустили в город императора с гвардией. Увидев, что враг вошел в Преслав, Сфенкел приказал дружинникам отступить в царский дворец. Пока ромеи были увлечены грабежом, Сфенкелу удалось увести в цитадель 8000 ратников и закрепиться на новых позициях (7, 126). Множество ромеев, проникших во дворец, было перебито, так продолжалось до тех пор, пока к цитадели не прибыл Цимисхий. Поскольку попытка прорваться во дворец закончилась неудачей, император решил лично возглавить атаку. Цимисхий спрыгнул с коня, взял у телохранителя щит и первым бросился на врага. Но русские сражались отчаянно, отразили все атаки и тогда император распорядился поджечь дворец. Сфенкел вывел ратников из дворца, выстроил в колонну и повел на прорыв из города. Вместе с русскими сражались и болгарские воины, не желавшие господства ромеев. Против Сфенкела император отправил магистра Варду Склира с отборными войсками. Бои продолжились на улицах города, почти все русские воины погибли, лишь Сфенкелу с небольшим количеством дружинников удалось вырваться из Преслава и уйти в Доростол. Как отметил Скилица, «город не устоял и был взят за два дня» (7, 126). Ромеи захватили болгарского царя Бориса, проживавшего в Преславе.
Прорыв имперской армии через горы Гем и быстрое падение Великого Преслава предрешили исход русско-византийской войны 970–971 гг., это была величайшая победа Цимисхия как тактика и стратега. Огромную роль сыграла и безответственность русских военачальников, их неспособность предвидеть вероятные действия противника. После таких катастрофических неудач у Святослава не осталось шансов на победу в войне, но киевский князь ещё об этом не догадывался.