Между тем Святополк, живший в Польше у своего тестя князя Болеслава Храброго, уговорил его начать войну с Русью. В 1018 году во главе большого войска Болеслав и Святополк у реки Буг разбивают войско Ярослава, который бежит в Новгород, а оттуда даже намеревается отправиться в Скандинавию. Только решимость новгородцев не отпустить своего князя удерживает его от этого шага. Болеслав и Святополк вступают в Киев, и Святополк вновь становится киевским князем. Пробыв несколько месяцев в Киеве, польский князь возвращается в свое отечество, поскольку жители Руси начинают убивать поляков, остановившихся в русских селах и городах. С собой Болеслав захватывает большую добычу, в том числе увозит киевскую казну. Ярослав в Новгороде собирает полки и идет в поход на Киев. Без всякого сражения, понимая, что он не в состоянии оказать сопротивление, Святополк бежит к печенегам. Ярослав становится Киевским князем вторично, а в 1019 году встречается с печенежским войском, которое ведет на Русь Святополк, на реке Альте, где ранее погиб Борис. В кровопролитном сражении Святополк разгромлен, он бежит на запад. У братоубийцы начинается мания преследования, и в какой-то пустыне он погибает. По поздним фольклорным преданиям, Святополк был поглощен землей, а летописец говорит, что от его могилы «идет смрад».
События борьбы Владимировичей нашли отражение и в иностранных источниках. Из латинских памятников большой интерес в этом отношении представляет «Хроника» епископа города Мерзебурга Титмара (975 — 1018), которая написана буквально во время рассматриваемых событий. Здесь говорится о том, что Владимир разделил свои владения между двумя сыновьями, а третий (Святополк) сидел тогда в тюрьме. На самом деле, конечно, сыновей у Владимира было больше. Под «вторым» сыном исследователи подразумевали то Бориса, то даже внука Владимира Брячислава, племянника Ярослава и Святополка. То, что эти «братья» могли находиться и в разной степени родства, — неудивительно, если помнить о том, что русские князья называли друг друга условно «братьями». Но в принципе имя «второго» брата не имеет значения, так как по ходу повествования он больше и не появляется. Далее Титмар говорит о захвате королем Руси (Ярославом) какого-то города, принадлежавшего Болеславу, затем о вторжении Болеслава на Русь, в результате которого на русском престоле был восстановлен Святополк, «долго пребывавший в изгнании». После этого польский князь «довольный вернулся» на родину. Исследователи обычно сопоставляли эти известия с захватом Ярославом Берестья в 1017-м и походом Болеслава на Русь в 1018 году.
Однако «довольное» возвращение Болеслава плохо сопоставимо с его возвращением из Киева в 1018 году, почти бегством. Недавние исследования показали, что сведения о возвращении Болеслава не успели войти в хронику Титмара, поэтому возможно, что здесь имеется в виду какой-то неизвестный другим источникам поход на Русь и восстановление Святополка на престоле какого-то из городов, ранее ему принадлежавших. Таким городом мог быть Туров, в котором княжил Святополк еще при Владимире, или какой-нибудь другой. С другой стороны, далее в своей хронике Титмар вновь говорит о захвате Ярославом города, но на этот раз принадлежавшего Святополку. В этом сообщении как раз и можно увидеть аналогию с захватом в 1017 году Берестья, которое могло принадлежать Святополку. Тем более что далее у Титмара следует фраза: «На город Киев, чрезвычайно укрепленный, по наущению Болеславову часто нападали враждебные печенеги, пострадал он и от сильного пожара». Пожар Софии, по Титмару, произошел в 1017 году. А эти данные хорошо согласуются с туманным по смыслу сообщением «Повести временных лет» под 1017 годом. Таким образом, сведения латинской хроники позволяют значительно расширить наши знания о борьбе Святополка с Ярославом.
Далее Титмар подробно рассказывает о походе Болеслава на Русь: сражение на Буге он датирует 22 июля, а захват Киева, после недолгого сопротивления, 14 августа 1018 года, что опять-таки хорошо согласуется с летописными известиями.