Столь патриотичная позиция Ярослава была предусмотрительным ответом на вызов со стороны Святополка, который вынужден был опираться на иноземцев. Беглец нашел приют у тестя, польского князя Болеслава Храброго, и снова искал помощи у печенегов. В противовес Болеславу, Ярослав заключил союз с германским императором Генрихом II. Но немцы были так побиты поляками, что император просил о мире и сам посоветовал Болеславу обратить силы на восток. Использовать в своих целях «права» Святополка хотели и печенеги. В 1017 году они напали на Киев. Ярослав едва одолел их в сече под стенами города. На следующий год на Русь двинулось войско поляков, печенегов, немцев и венгров под командой Болеслава и Святополка. Ярослав, собрав русь, варягов и новгородских словен, поспешил на Волынь и встретил врага у переправы через пограничную реку Буг. Болеслав был так велик и тяжел, что едва сидел на коне, но русские напрасно дразнили его толстяком. Знаменитый воин, не стерпев насмешек, бросился на коне в реку, крикнув своим воинам: «Коли вам сего укора не жаль, я погибну один!» Не ожидавшее стремительного нападения войско Ярослава было уничтожено.
Князь с четырьмя спутниками прибежал в Новгород и намерен был податься за море. Но новгородцы во главе с посадником Константином, сыном Добрыни, изрубили приготовленные к бегству ладьи, сказав князю: «Хотим еще биться с Болеславом и Святополком». Объявили сбор воинства и денег: сельские старосты дали по десять гривен, бояре — много больше. В том же 1018 году князь двинулся на Киев с новым войском наемных варягов и новгородцев, по пути к ним охотно присоединялись русские воины. Ведь иноземцы, вступив в Киев со Святополком, разошлись по другим городам «на покорм», всюду грабя и буйствуя. Скоро народ восстал. Болеслав, уже имевший печальный опыт столкновения с рассвирепевшим народом в Чехии, бросил своего союзника и бежал, прихватив киевскую казну, бояр и сестер Ярослава. За одну из них — Предславу — Болеслав безуспешно сватался прежде. Теперь он сделал ее наложницей. Разумеется, такое с русской девушкой не прошло. Немецкий хронист Титмар Мерзебургский отметил, что Болеслав объявил Предславу законной женой, хотя был христианином и был женат.
Святополк бежал к печенегам, а Ярослав вновь утвердился в Киеве. Братья готовились к решающей битве. В 1019 году войско великого князя сошлось с печенежской ордой на реке Альте, притоке Трубежа. На восходе солнца противники вступили в бой столь жестокий, какого еще не бывало на Руси, и к вечеру печенеги полегли под русскими мечами. Израненный Святополк спасся с поля брани, но не ушел от расплаты. Ненавидимый народом и проклинаемый церковью князь бежал, согласно летописи, все дальше и дальше, терзаемый манией преследования, пока не сгинул где-то между Польшей и Чехией. По скандинавскому преданию, он был убит Эймундом, тем самым, кто ранее по приказу князя «Ярислейва» отрубил голову князю «Бурислейву» и принес ее своему повелителю. Историки, начиная с XIX века видевшие в рассказах двух полусказочных саг намек на убийство святого князя Бориса по воле Ярослава, благоразумно не приводят обстоятельства приключений скандинавов, не имеющие ничего общего с ситуацией на Руси. И делают вид, что не знают о том, что в сагах «Бурицлейвами» именовались полабские князья и польские правители, Болеслав I и Болеслав II. В народной памяти князь, сражавшийся против иноземцев, остался Ярославом Мудрым, а Святополк — Окаянным.
Но усобица еще не была завершена. Пока Ярослав боролся за великокняжеский престол, его младший брат Мстислав в благодатном граде Тмутаракани на берегу Керченского пролива развлекался войной и охотой. Мстислав был дороден телом, румян, с большими глазами. Он был храбр в бою, любил выпить и поесть, но больше всего любил и берег дружину, для которой ничего не жалел — так хвалит князя «Повесть временных лет». Во время войны с касогами он предпочел решить исход битвы единоборством вождей, одолел великана Редедю и принял побежденных в подданство. Служили князю и потомки хазар. Однако когда в 1024 году Мстислав неожиданно ворвался в Киев, воспользовавшись отъездом Ярослава в Новгород, городские мужи попросту указали ему на ворота. Князь не обиделся и сел в Чернигове, где северяне приняли его с распростертыми объятиями.