В расстановке войск Даниил использовал необычную композицию. Основные силы под его собственным руководством были расположены на левом фланге. Центр держала «малая дружина» во главе с дворским Андреем. Правый фланг занимали волынские полки Василька Романовича. Эту комбинацию мы уже видели десять лет назад в битве под Шумском.
Ростислав также проявил оригинальность в расстановке. Центральный полк, состоявший, вероятно, из венгров, был удален за основные порядки и превратился в запасный. Им руководил бан Фильний. Правый фланг, выполнявший теперь функцию центрального, включил как венгерские войска, так и отряды галицких оппозиционеров («Русь и Угры и Ляхы»). Его возглавил сам Ростислав. Левый фланг заняли польские дружины Флориана. При этом некоторая часть пехоты («пешцев»), вероятно, поляки, была оставлена под стенами Ярослава для предупреждения вылазок горожан и охраны осадных машин: «…пешци же остави противу вратом града, стеречи врат, да не изыдут на помощь Данилу и не съсекут пороков»[411].
Фактически Ростислав изолировал от боестолкновения значительную часть пехоты, то есть рядовых воинов, которые остались либо под городскими стенами Ярослава, либо в составе запасного полка Фильния. Вперед выступили тяжеловооруженные рыцари, ожидавшие от битвы новых единоличных противоборств по правилам великосветских турниров.
С началом боя затягивать не стали. Судя по всему, день 17 августа 1245 г. уже клонился к концу, так что стороны пребывали в нетерпении. Медленно двигались русские «пешцы» на врага, «поидоста с тихостью на брань, сердце же ею крепко бе на брань и устремлено на брань». Ростислав демонстрировал бóльшую скорость. После краткого обстрела лучников он двинул на противника своих всадников. Их целью была хоругвь князя Даниила, удар наносился именно по этому полку. Однако дворский Андрей предупредил прорыв и заслонил левый фланг: «ускорив, сразися с полкомъ Ростиславлим». План Даниила заключался в том, чтобы ввязать в схватку в центре и оттянуть к реке как можно больше интервентов, после чего ударить на них с фланга. Ростислав, вероятно, был настолько уверен в победе, что просто пустил вперед тяжеловооруженную конницу, оставив в тылу пехоту, призванную потом довершить дело. Впечатление, которое производили эти великолепные, закованные в дорогостоящие доспехи рыцари, было очень сильным, и одно оно могло обернуть в бегство неискушенного русского «воя» или степного кочевника. Так произошло с некоторыми половцами, обратившимися в бегство сразу после переправы через Сан, только завидев солнечные блики на латах польско-венгерских кавалеров. Но это было исключением. Другие ратники галицко-волынской коалиции не только не дрогнули, но проявили в ходе сражения чудеса мужества и стойкости.
Дружина дворского Андрея встретила первый удар венгерской кавалерии лесом копий, «копьем же изломившимся, яко от грома тресновение бысть». Сокрушительного удара не получилось. Всадники вынуждены были остановиться и ввязаться в позиционный бой. На левом фланге польские рати Флориана врубились в полки князя Василька и, как сообщает летопись, «крепко идуща» с криками: «Поженем на великыи бороды!» Очевидец вспоминал: «И силен глас ревуще в полку их». Даниил же, пройдя через «дебрь глубокую», с основными силами ударил на «задний полк» Фильния.
Сражение было упорным и жестоким. Потери каждой из сторон были значительными: «мнози падша с конеи и умроша, инии уязвени быша от крепости ударения копеинаго». Воины дворского Андрея долго сдерживать натиск тяжелой кавалерии не могли и начали постепенно отходить к Сану, оставляя за собой груды мертвых тел. Даниил, все еще выжидавший нужного момента, чтобы ударить на нападавших сзади, послал к Андрею небольшое на вид подкрепление. Оно состояло из «20 муж избранных», то есть двадцати рыцарей с оруженосцами и сопроводительными отрядами. Но и это не спасло положения, Андрей неуклонно отступал, «крепки боряшеся с ними».