Польский князь действовал энергично и напористо. Как только краковские отряды стали подниматься на холмы, Мешко повел тяжеловооруженную конницу в контратаку и сокрушил боевые порядки противника. Воинство Казимировичей рассыпалось по окрестным лесам, а Мешко повел своих людей на выручку сыну. Но опоздал, Болеслав был уже мертв, а войско его разбито. Однако благодаря этому маневру Мешко привел свои отряды обратно на вершину холма, а дружина Романа оказалась внизу. Русским вновь предстояло атаковать вверх по склону, а между тем их кони уже устали и не могли набрать необходимый разбег для атаки. Но Роман указал мечом на знамя Мешко и устремился вперед. Тогда польский князь выдвинул вперед стрелков и тысячи стрел посыпались на дружинников.

Поляки занимали выгодную позицию, стреляя сверху по наступающему противнику, они нанесли русским немалый урон. Бились на земле подстреленные кони, один за другим падали с седел гридни, и атака волынской дружины захлебнулась. Роман неистовствовал и гнал своих воинов вперед, но в этот момент, разодрав кольца кольчуги, в плечо князя вонзилась стрела. Роман Мстиславич выронил щит и был поражен еще двумя стрелами. Телохранители окружили князя, прикрыли щитами и стали уходить с поля битвы. Увидев, что у неприятеля случилась заминка и вражеская конница остановилась на полдороге, Мешко приказал полякам идти вперед. Он лично возглавил эту последнюю атаку. Навстречу князю устремились волынские дружинники, и две лавины всадников столкнулись на склоне. Некоторое время бой шел на равных, но затем поляки стали одолевать. В этом бою Мешко чуть было не погиб, поскольку некий польский воин по имени Григорий принял его за врага и нанес князю тяжелую рану. В азарте боя Григорий хотел добить поверженного врага, но испуганный Мешко успел снять с головы шлем и объявить, что он князь. Воин осознал свою ошибку, встал над раненым господином и защищал его от врагов, а затем помог покинуть поле боя.

Но для Романа это уже не имело никакого значения, поскольку его войско потерпело тяжелое поражение. Дружинники не выдержали слаженной атаки поляков и стали покидать поле боя, отступая к обозу, где находился раненый Роман. От окончательного разгрома русских спасло только наступление темноты.

Но и Мешко не мог в полной мере насладиться победой. Его войска понесли большие потери, сын был убит, сам он ранен, а главное, князь не обладал всей полнотой информации о том, в каком положении находятся войска противника. Неукротимый нрав Романа был хорошо известен в Польше, и Мешко справедливо опасался, как бы волынский князь не затеял наутро новую битву. Поэтому он отвел свои войска за болото и таким образом защитился от предполагаемой атаки недобитого врага.

Роман в течение нескольких дней оставался на месте, залечивал раны, собирал рассеянных по лесам воинов, а главное, поджидал идущие ему на помощь войска из Кракова, которые вновь сумели собрать военачальники братьев Казимировичей. Но подмоги волынский князь так и не дождался, поскольку Мешко сумел перехватить этот отряд и разбить в открытом бою. Больше Роману в Польше делать было нечего, и он велел уходить на Русь. Краковский епископ Фулькон (Пелка) пытался удержать Романа, поскольку опасался похода Мешко на Краков, но князь ему с грустью ответил: «Верно, почтеннейший отче, но, как видишь, удручает меня двойное увечье: с одной стороны, рана в моем теле, с другой – потери моего войска, часть которого в сражении пала, часть бежала» (Винцентий Кадлубек, IV, 23).