Вриенний выступил из своей главной базы в Диррахии на албанском побережье и пересек Южные Балканы по Виа Эгнатиа, попутно ведя активную вербовку, что позволило ему довести численность армии до 12 000 человек — по большей части преданных своему вождю и испытанных в боях ветеранов. Войдя с триумфом в свой родной город Адрианополь, Вриенний короновался. Жребий был брошен. Выступая в поход против мятежника, Алексей имел лишь нескольких сотен франкской тяжелой конницы, 2000 турок, присланных союзными анатолийскими эмирами, и из Малой Азии пришло еще около 2000 бойцов. К ним добавились недавно сформированные части «бессмертных» (не связанные с войсками того же названия, созданными Иоанном Цимисхием столетием ранее) численностью до 1000 гвардейцев. Вся имперская армия состояла из 5500, самое большее — 6500 человек, по большей части новобранцев. Турецкий султан обещал подкрепление, но оно еще не подошло, когда император дал Алексею приказ выступать. Сам приказ не оставлял возможностей для разночтений: встретить Вриенния, разбить и отбросить. В таком положении единственный шанс Комнина был в завлечении врага в такую местность, где можно заранее устроить засаду. Как показал ход сражения, первоначальный план Алексея был неудачен и почти привел к поражению. Все же применив ту тактику, которой он должен был придерживаться с самого начала, и благодаря блестящему тактическому удару он сумел полностью изменить ход боя и закончить день громкой победой (см. карту 9).
Прежде всего Алексей Комнин решил намертво прикрыть главную дорогу на Константинополь, не предоставив сопернику альтернативы генеральному сражению. Вриенний стал лагерем недалеко от Кедуктона (от лат. акведук) на открытой равнине. Вступив во Фракию, Алексей расположился на небольшой речке Хальмир, неподалеку от крепости Калаврия, около Селимбрии. Он никак не укреплял лагерь, что ввиду численного превосходства мятежников было бы просто бесполезно, и возлагал все надежды только на внезапный удар по врагу из засады. Чтобы получить информацию о движениях неприятеля, во все стороны была выслана разведка. Некоторые из разведчиков-турок были схвачены и открыли Никифору местонахождение Алексея и численность его войск. После тщательной рекогносцировки Комнин решил, что лучше всего завлечь Вриенния в атаку собственных главных сил, построенных у незащищенного лагеря, и приготовить засаду на холмистом, поросшем кустами участке, через который враг должен был бы наступать.
Вриенний разделил свою армию на три части. На правом крыле стоял его брат Иоанн во главе 5000 франкских наемников, фессалийских всадников, хетарейской гвардии и маниакатов — франкских кавалеристов, завербованных в Южной Италии. Левым крылом командовал Катакалон Тарханиот с 3000 фракийцев и македонян. Центр, где приготовились к бою от 3000 до 4000 македонян, фракийцев и фессалийцев, Никифор оставил за собой. На крайнем левом фланге, приблизительно в миле от главной линии, были поставлены печенеги с задачей при первой возможности охватить и окружить правый фланг Алексея. Следуя проверенным византийским военным традициям, части Вриенния построились в две линии. Вторая линия стояла на небольшом расстоянии позади первой и выполняла роль полевого резерва и прикрытия первой линии на случай отступления.
Комнин разделил свои намного меньшие силы на две части. Константин Катакалон с малоазиатскими и союзными турецкими отрядами стоял справа, сам главнокомандующий с франками и «бессмертными» — слева. Отдельную часть — вероятно из «бессмертных» — послали вперед в засаду на левом фланге, а турки на крайнем правом должны были противодействовать охвату печенегов.
Битва разгорелась, как только мятежники поравнялись с засадой. Внезапность вылазки привела к замешательству в рядах атакующих, которые в течение нескольких минут были опрокинуты и побежали. Но с подходом второй линии во главе с Иоанном Вриеннием порядок быстро восстановился, и перед лицом превосходящих сил неприятеля засадные части, в свою очередь, обратились в бегство, неудачным следствием которого было то, что беглецы смяли и увлекли за собой войска собственного левого фланга, в первую очередь еще недостаточно хорошо обученных и необстрелянных «бессмертных». Понеся сравнительно легкие потери, эти части, достигнув безопасного удаления от поля боя, остановились и снова собрались под знаменами. В пылу схватки Алексей не заметил потери половины армии и во главе небольшого отряда продолжал сражаться, пока не понял, что вскоре будет полностью отрезан и окружен.