На 17 август 986 г. Самуил разгромява византийците в битката при Траянови врата. Византийският император Василий ІІ претърпява най-голямото поражение в походите си за покоряване на България. Значителна част от армията му е унищожена, а той едва успява да се спаси.
Преди да се реши окончателно на военни действия, Василий II прави опит да се разбере с българите. В този контекст той повежда преговори с по-големия от останалите живи комитопули Арон, целейки да внесе раздор между него и Самуил. В замяна на своето подчинение Арон иска да завърже роднински връзки с императора чрез брак на един от синовете си с Ана, сестрата на Василий II. Вместо сестра си императорът изпраща при Арон друга невеста. Когато българите разкриват измамата, настъпва разрив в преговорите и императорът повежда армията си срещу тях.
Василий II поема на поход с армия, наброяваща до 30 000 души. От Адрианопол (дн. Одрин) императорът достига Филипопол (дн. Пловдив), а оттам се отправя към Сердика (дн. София). Целта му е да се справи с българите с един удар.
След завземането на Сердика, която освен център на Ароновите владения е и стратегически пункт между североизточните и югозападните български земи, Василий II планира да продължи похода си срещу Самуил на югозапад към Македония.
По пътя си към Сердика, около прохода Траянови врата, императорът оставя силен отряд начело с военачалника Лъв Мелисин със задачата да охранява тила на главната армия. Достигайки Сердика, Василий II я обкръжава и изгражда силно укрепен лагер.
Василий ІІ заварва в крепостта едва около 4500 бранители, тъй като Самуил е на поход с войски в Тесалия (Средна Гърция). Това привидно облекчава задачата му, но го принуждава да бърза преди Самуил да се е завърнал.
Войските на Самуил с изключително бърз марш пристигат в Софийското поле и се установяват под Витоша в района на днешното село Бистрица в укрепен лагер. Оттам извършват внезапни атаки срещу византийските войски, които обикалят Софийското поле за храна и фураж. Така вместо ромейците да изтощят с глад обсадените, те самите започват да гладуват.
Обсадата се проточва 20 дни. Византийският император се насочва обратно към Филипопол пак през прохода Траянови врата. Самуил не тръгва да го преследва по петите, а прилага „успоредно преследване” от Бистрица през Долни и Горни Пасарел южно от Лозенска планина, за да навлезе в Ихтиманското поле преди византийските войски и да им подготви засадата.
Византийската войска отстъпва от Софийското поле към Щипон (дн. Ихтиман), където нощува. Слухът, че българите заграждат околните планински пътища, предизвиква смут сред войниците и на следващия ден отстъплението продължава при все по-голямо безредие. Виждайки това, българите, предвождани от цар Роман, Арон и Самуил, се спускат срещу византийците, превземат лагера им и превръщат отстъплението им в бягство.