Ярослав Мудрый (внук Святослава) впервые столкнулся с печенегами еще в ходе междоусобной борьбы за киевский престол. Святополк Окаянный заключил с кочевниками союз. После его поражения под Любечем и бегства в Польшу печенеги в 1017 г. совершили набег на Киев. Ярославу с большим трудом удалось отразить нападение.
В 1019 г. Святополк вновь обратился к печенегам за помощью и осадил Киев. В битве на Альте Ярослав разгромил войско брата, в составе которого было несколько печенежских отрядов.
В 1036 г. печенеги «в силе тяжцей» подошли к Киеву и осадили его. Ярослав Владимирович спешно собрал войско, которое включало в себя новгородцев и наемных варягов. Князю удалось потеснить ряды осаждавших и проникнуть в город. В состав войска вошло киевское ополчение.
Ранним утром княжеские войска выстроились в поле перед стенами Киева. В центре находилась варяжская дружина (главная ударная сила), на флангах – новгородцы и киевляне.
Ожесточенное сражение продолжалось весь день: «И бысть бой вельми жесток, едва к вечеру Ярослав победи печенег и разбил их розно». Огромное количество вражеских воинов потонуло во время панического бегства в р. Сетомле.
Осада Киева была последним печенежским набегом на Русь: кочевники «погибоша, а прок их пробегоша и до сего дни». Печенеги были вытеснены с южных русских границ торками и откочевали на Балканы.
Согласно преданию, Ярослав Мудрый повелел заложить на месте сражения храм Святой Софии.