След победата при Траянови врата и последвалата гражданска война във Византийската империя българският цар Самуил се възползва и започва нападения над ромейските крепости и градове на Балканите. През 995 г., след като овладява голяма част от Северните Балкани, той се насочва на юг.
Преди битката Самуил подготвя засада. Той нарежда на войниците си да изкопаят дълбоки ями, трапове и да поставят други капани, след което царят оставя по-голямата част от армията си настрана. Тогава Самуил напада града с малка група войници. Солунският дукГригорий Таронит изпраща войските си под командването на сина си Ашот Таронит, за да отблъсне българите. След кратко сражение Самуил започва да отстъпва, водейки византийците в капана, който предварително е приготвил. Обградените византийски войски са напълно разбити, а Ашот – пленен. Григорий веднага тръгва начело на останалата част от бойците си, за да спаси сина си, но той също е разбит и загива в битката.