Между тем, в 1017 г. Ярослав с войском двинулся к Берестью (нынешнему Бресту). Город Берестье к 1015 г. входил в состав Туровского княжества, и там мог находиться как русский гарнизон, преданный Святополку, так и польское войско. Взял ли Ярослав Берестье или нет, неизвестно, но хронист Титмар Мерзебургский кратко написал, что Ярослав, «овладев городом, ничего [более] там не добился». Итак, войско Ярослава вернулось назад. Возможно, это было связано с прибытием печенегов, ведомых Борисом Владимировичем.
Летом 1017 г. Болеслав двинулся с войском навстречу Ярославу. Помимо поляков у него было 300 наемных немцев, 500 венгров и 1000 печенегов. С поляками шла и русская дружина Святополка.
Рати встретились 20 июля 1017 г. на Волыни на реке Буг. Два дня противники стояли друг против друга и начали обмениваться «любезностями». Ярослав велел передать польскому князю: «Пусть знает Болеслав, что он, как кабан, загнан в лужу моими псами и охотниками». На что Болеслав ответил: «Хорошо ты назвал меня свиньей в болотной луже, так как кровью охотников и псов твоих, то есть князей и рыцарей, я запачкаю ноги коней моих, а землю твою и города уничтожу, словно зверь небывалый».
На следующий день, 22 июля, воевода Ярослава, некий Буда начал насмехаться над польским князем, крича ему: «Вот мы проткнем тебе палкою брюхо твое толстое!»[7] По словам летописца, Болеслав был крупным и толстым, так что с трудом мог сидеть на лошади. Он не вытерпел насмешки и сказал своим дружинникам: «Если вам это ничего, так я один погибну», – сел на коня и бросился в реку. Войско поспешило за своим князем. Русские полки не ожидали такой внезапной атаки, растерялись и обратились в бегство.
Разгром был полный. По свидетельству Титмара Мерзебургского: «Тогда пало там бесчисленное множество бегущих». То же говорят и русские летописцы: «И иных множество победили, а тех, которых руками схватили, расточил Болеслав по ляхам». В числе погибших называют и воеводу Блуда (Буду).
Сам Ярослав с четырьмя дружинниками убежал в Новгород. Там он решил бежать в Швецию. Но новгородцы во главе с посадником Константином, сыном Добрынин «рассекли ладьи Ярослава, так говоря: «Хотим и еще биться с Болеславом и со Святополком». Начали деньги собирать: от мужа по 4 куны, а от старост по 10 гривен, а от бояр по 18 гривен. И привели варягов, и отдали им деньги, и собрал Ярослав воев многих».
Между тем бегство Ярослава открыло союзному войску Болеслава путь на Киев. Титмар Мерзебургский пишет: «Добившись желанного успеха, [Болеслав] преследовал разбитого врага, а жители повсюду встречали его с честью и большими дарами». Войско Болеслава шло через Владимир Волынский, Дорогобуж, Луцк и Белгород. Жители этих городов не оказывали сопротивления и признавали власть Святополка.
В начале августа 1018 г. поляки подошли к Киеву. Дружина Ярослава и наемники-варяги попытались оказать сопротивление.