Но польский князь понимал, что удерживать Киев дольше будет невозможно. Он попытался даже вступить в переговоры с Ярославом, находившимся в Новгороде, и послал туда киевского митрополита. Поводом для серьезных переговоров стал вопрос об обмене дочери Болеслава и жены Святополка на жену Ярослава. Однако Ярослав не желал мириться в такой ситуации с Болеславом, кроме того, у него были весьма веские причины желать, чтобы жена его сгинула в польском плену.
Что же касается Святополка, то он не хотел ни мира с Ярославом, ни присоединения Киевской земли к Польше. В Повести временных лет говорится: «Болеслав же пребывал в Киеве, сидя [на престоле]; безумный же Святополк стал говорить: «Сколько есть ляхов по городам, избивайте их». Киевлян и жителей других городов, оккупированных ляхами, долго уговаривать не пришлось. Почти синхронно началось изгнание поляков. Однако непонятным образом Болеславу удалось уйти из Киева с большей частью людей, а также с награбленными драгоценностями. Знатные русские пленники – бояре Ярослава, жены и сестры – были отправлены в Польшу, видимо, еще раньше. Болеславу удалось сохранить за собой и Червенские города, приобретенные еще князем Владимиром Святым.
После ухода поляков Святополк стал киевским князем и тоже начал чеканить собственную серебряную монету. А тем временем мудрый Ярослав счел себя холостым и послал сватов к шведскому конугу Олафу Шетконугу. Летом 1019 г. в Новгороде состоялось бракосочетание дочери Олафа Ингигерд, принявшей христианское имя Ирина, с мудрым Ярославом. Ингигерд привела с собой в качестве приданого дружину, а Ярослав передал шведам город Ладогу с окрестными землями. Шведы называли Ладогу Альдейгьюборг, первым правителем ее стал шведский ярл Регнвальд Ульвссон. Вернуть Ладогу русским князьям удалось лишь во второй половине XI века.
В том же 1019 г. Ярослав двинулся с большой ратью на Киев. Согласно Устюжской летописи, у него было 40 тысяч человек, из них варягов 18 тысяч.
Святополк призвал на помощь печенегов, но в битве на реке Альте недалеко от Киева был разбит. Святополк в очередной раз бежал на запад, где и умер. Причем достоверных сведений о месте и времени его смерти нет. Тем не менее гражданская война на Руси с бегством «окаянного» Святополка не закончилась. Ярославу пришлось воевать еще с племянником Брячиславом Полоцким и братом Мстиславом Тмутараканьским.
В 1021 г. Ярославу удалось заключить мир с племянником. При этом он не только признал полную независимость Полоцкого княжества, но и уступил города Витебск и Усвят, где были стратегические волоки на пути «из варяг в греки». В 1025 г. Ярослав заключил мир с Мстиславом.