Будучи правителем Новгорода, Ярослав должен был платить отцу две тысячи гривен дани ежегодно; еще тысяча гривен должна была выплачиваться войску великого князя. Ярослав, которому в ту пору было уже за тридцать, рискнул объявить о своем неподчинении и отказался платить дань. Узнав об этом, Владимир пришел в страшное раздражение и начал собирать войско в поход на Новгород, чтобы проучить дерзкого сына. Ярослав же не собирался отступать и пригласил наемников — варягов. Как пишет Карамзин, «небо… спасло Ярослава от злодеяния редкого» — войны с родным отцом. Битва не состоялась, потому что князь Владимир тяжело заболел и вскоре умер. Его болезнь и смерть совпали по времени с вторжением печенегов, борьбу с которыми Владимир успел поручить своему сыну Борису. Тот отправился в поход против печенегов, еще не зная о кончине отца. За время его отсутствия власть в Киеве захватил Святополк, который был лишь усыновленным ребенком Владимира.
Вернувшись с победой из похода, Борис с войском остановился у стен Киева и только здесь узнал о смерти Владимира. Военачальники советовали ему захватить власть, которая, как они считали, принадлежит ему по праву. Но Борис не захотел воевать со своим братом. Его соратники посчитали этот поступок малодушным и массово перешли на сторону Святополка.
Святополк же, чувствуя, что его положение непрочно, пока вблизи Киева находится другой наследник Владимира, к тому же имеющий куда больше прав на престол, потребовал от верных ему бояр убить Бориса. Когда убийцы подстерегли Бориса, он молился, и поэтому они не решились напасть на него. Тот же, узнав об окруживших его убийцах, принялся громко упоминать в молитве своего брата Святополка, пытаясь таким образом отвести от себя беду. Но, когда Борис закончил, убийцы все же ворвались в шатер и закололи его копьями. Вместе с ним, пытаясь прикрыть князя своим телом, погиб его слуга Георгий, родом из Венгрии. Борис умер не сразу. Он был еще жив, когда его завернули в ткань шатра. Святополк, узнав об этом, велел убийцам вернуться и завершить начатое. Следует отметить, что, согласно скандинавским летописям, убийство Бориса было совершено по приказу Ярослава, а не Святополка.
Но, как уже говорилось, у Владимира было много родных сыновей, и все они были потенциальными противниками Святополка в борьбе за власть. Для начала Святополк решил разобраться с Глебом. Он послал ему известие о том, что Владимир тяжело болен и желает увидеть сына. Глеб с малочисленным войском поспешил на свидание с отцом. Навстречу ему Святополк направил убийц. Недалеко Смоленска Глеба настигли посланцы Ярослава и рассказали ему о смерти отца и брата Бориса, а также о коварстве Святополка. Но и этот сын Владимиров проявил нерешительность, и вместо того чтобы свернуть с пути и избежать уготованной ему участи, остался на месте и принялся оплакивать отца. Вскоре его обнаружили люди Святополка и убили.
В летописях Борис и Глеб назывались сыновьями «болгарыни», однако, скорее всего, их матерью была греческая принцесса, жена Владимира. Возможно, это была одна и та же женщина, двоюродная сестра греческих императоров, дочь болгарского царя Петра. Поскольку Борис и Глеб были рождены христианкой, Владимир выделял их среди остальных своих детей. Он считал их более законными, так как был связан с их матерью христианским браком, в отличие от других своих некрещеных жен. К тому же они и по материнской линии были особами царской крови. Борис и Глеб еще долго считались покровителями рода князей и хранителями русской земли; победы русского войска порой приписывались вмешательству этих святых. Первыми ростками культа Бориса и Глеба можно считать 1052–1053 годы. Именно в это время началось возведение Вышгородской церкви Святых Романа и Давида. Целью ее постройки было иметь достойное место захоронения останков Бориса и Глеба, признанных мучениками. Их канонизация состоялась в 1071 году, и они стали первыми русскими святыми. В 1115 году мощи Бориса и Глеба были торжественно перезахоронены в Вышгороде, в специально возведенной церкви. Позднее во время нашествия Батыя церковь была разрушена, а мощи святых утрачены.
Святослав, удел которого находился в древлянских землях, прослышал о коварстве Святополка и решил, не дожидаясь своей очереди, бежать в Венгрию. Однако посланцы Святополка настигли его по дороге и убили.
Против братоубийцы выступил Ярослав. Правда, он мог лишиться жизни в собственной вотчине. Ведь Ярослав еще при живом отце готовился к войне против него, для чего призвал войско варягов. Приезжие вели себя дерзко по отношению к новгородцам, унижали их жен и грабили дома. Оскорбленные новгородцы собрали ополчение и перебили варягов. После этого самые знатные бояре отправились к Ярославу просить прощения за свой бунт. Но князь велел казнить их за неповиновение. И как только свершилась эта расправа, он получил известие о кончине своего отца и предательстве Святополка. Ярослав вышел из положения, попросту купив доверие новгородцев, которым он щедро заплатил за убиенных бояр, и прилюдно покаявшись в своем грехе. Затем Ярослав собрал новое войско из 40 000 русских воинов и тысячи варяжских и выступил против Святополка.
Новгородцы без особых колебаний согласились вновь защищать князя, ведь отказать Ярославу означало вновь оказаться в зависимости от Киева и принять нового Киевского наместника. Важную роль в принятии окончательного решения стал страх горожан: Ярослав мог набрать войско из одних лишь варягов, вернуться из-за моря и отомстить Новгороду, как это сделала его прабабушка, княгиня Ольга.
Ярослав и Святополк встретились у Любеча, на берегах Днепра. Войска долго стояли друг против друга, не решаясь напасть. Осенью Ярослав наконец приступил к активным действиям. Подкупив одного из воевод Святополка, князь новгородский узнал, что в одну из ночей войско Святополка устраивает пир. В эту ночь Ярослав со своими воинами, стараясь не шуметь, переправились через Днепр. Оказавшись на чужом берегу, они столкнули свои лодки в реку, показав тем самым, что намерены или победить, или умереть. Чтобы в пылу битвы различать своих, новгородские воины повязали головы платками. В ходе сражения войско Святополка, теснимое новгородцами, вынуждено было отступать по льду едва замерзшего озера. В результате лед надломился, и большая часть воинов Святополка погибла.
Ярослав на правах победителя вступил в Киев, где местные бояре устроили ему торжественную встречу. Однако Святополк не собирался мириться с поражением и отправился искать заступничества к польскому королю Болеславу. Тем временем Ярослав был занят обустройством Киева, сильно пострадавшего от пожара, и не успел как следует подготовиться к отражению нападения нового врага. По свидетельству польских историков, когда к Ярославу прискакал гонец с вестью о нападении Болеслава, он занимался рыбной ловлей на Днепре. Князь тотчас прервал свое занятие со словами: «Не время думать о забаве, время спасать отечество».
Войска Болеслава и Ярослава встретились на Буге. И здесь удача отвернулась от русского князя. Стоя на противоположных берегах реки, воины осыпали друг друга насмешками. Один из воевод Ярослава решил посмеяться над необычайной тучностью короля Болеслава. Тот, оскорбившись, призвал своих воинов к немедленному отмщению. Польское войско тут же устремилось в атаку через реку, а ошеломленные такой стремительностью русские не смогли оказать сопротивления.
Ярослав был вынужден отступить в Новгород, поскольку войска для обороны Киева у него не было. Болеславу и Святополку оставалось взять Киев. Город был осажден, и вскоре его жителям пришлось открыть ворота и впустить польское войско. Бояре были вынуждены вновь признать великим князем Святополка, а Болеслава удостоили титула великодушного покровителя. Впрочем, именно за Болеславом, приведшим на копьях своих воинов Святополка в Киев, осталась фактическая власть над Русью.
Ярослав, который уже не мог продолжить борьбу, готов был покинуть новгородскую землю и укрыться у варягов. Однако новгородцы решили поддержать своего князя и собрали средства на организацию нового войска.
Неожиданную помощь Ярославу оказал сам Святополк. Недовольный тем, что власть на территории Руси принадлежит не ему, а посадившим его на престол полякам, он задумал новый заговор, на этот раз против своих недавних друзей. Болеслав, отбывший в Польшу и захвативший с собой многочисленные киевские сокровища, оставил в некоторых городах своих воевод. Святополк тайно велел градоначальникам этих городов убить поляков. Последние были уверены, что в Руси им ничто не угрожает, и не принимали мер предосторожности. За свою самонадеянность они поплатились жизнью. Вдогонку за Болеславом тоже было послано войско, но его разбили под Бугом, как и войско Ярослава.
Между тем наш герой со вновь собранным войском шел к Киеву. Войско же Святополка было существенно меньше, к тому же часть его была разгромлена Болеславом при отходе в Польшу. Не дожидаясь прихода Ярослава, Святополк бежал к печенегам и призвал давних врагов Русской земли на помощь. Войска Ярослава и печенегов сошлись под Киевом, на том самом месте, где в свое время посланные Святополком убийцы настигли Бориса. Битва продолжалась целый день и закончилась победой войска Ярослава. После этого Святополк снова бежал, на этот раз уже окончательно. Больше он не предпринимал попыток захватить власть. В историю этот русский правитель вошел под прозвищем Святополк Окаянный.