Итак, 12 августа 1399 года по Р.Х. на реке Ворскла сошлись две рати: объединённая армия Великого княжества Литовского под начальством Великого князя Литовского Витовта и небольшое, поначалу, татарское войско хана Золотой Орды Темир-Кутлуга.
Причиной, по которой Темир-Кутлуг выступил навстречу Витовту, стал отказ великого князя Литовского выдать Орде беглеца Тохтамыша. А отказал ордынцам Витовт потому, что заключил с Тохтамышем соглашение — литовский князь помогает свергнутому правителю вернуться на престол, тот же уступает Витовту русские земли.
Тохтамыш бежал в пределы Великого княжества Литовского не один. С ним был верный иль — родичи, их семьи, зависимые от низложенного хана люди и гвардия — общим числом сорок тысяч человек, из которых несколько тысяч были воинами. Это позволяло считать бывшего властителя Орды не просто беглецом, а законным наследником на ордынский престол. Витовт поселил Тохтамыша и его людей в окрестностях города Лида, обязав при этом жителей содержать пришельцев. Сам же Великий князи Литовский не торопился воевать Орду. Он был занят более насущными проблемами — борьбой с Тевтонским Орденом и вмешательством в дела Северо-Восточной Руси (играя на противоречиях между Новгородом и Москвой).
Едигей дважды требовал от Витовта выдать ему беглеца и дважды Великий князь Литовский отказывал татарам.
Желая побудить Витовта к войне, Тохтамыш предложил тому выгодную сделку: он признавал право Великого князя Литовского на московское великое княжение, на Новгород, Псков, Тверь, Рязань в обмен на возвращение Тохтамышу золотордынского трона и сохранение за ним Сарая, Булгарии, Хаджи-Тархана (Астрахани), Азова и Заяицкой Орды.
Витовт принял предложение Тохтамыша, заявив при этом самонадеянно: «А немцев я и сам возьму!». В это же время он добился от Ордена согласия на своё княжение на Руси, обещав взамен уступить Ордену Псков.
Исполняя свою часть договора, литовский князь собрал сильную армию, доходившую до ста тысяч воинов. Сам он в это время находился в Киеве. В составе войска были русские удельные князья Литвы и Юго-Западной Руси, в их числе Андрей Ольгердович Полоцкий, Дмитрий Ольгердович Брянский (участники Куликовской битвы), Глеб Святославович Смоленский, Иван Борисович Киевский, Дмитрий Данилович Острожский, Дмитрий Михайлович Боброк-Волыский (бывший воевода засадного полка в Куликовской битве, решившего её исход) и другие, общим количеством пятьдесят, польские паны со своими дружинами, татары, предводительствуемые Тохтамышем, рыцари Тевтонского Ордена с несколькими сотнями панцирных всадников. Помимо холодного оружия и самострелов, армия Витовта имела на вооружение огнестрельные орудия — пушки и пищали.
В начале июля месяца 1399 года по Р.Х. литовско-русское войско выступило из Киева и двинулось по левому берегу Днепра на юг. В конце июля армия ВКЛ достигла нижнего течения реки Ворскла и остановилась на правом берегу её.
Уступая Витовту в количестве воинов, Темир-Кутлуг постарался оттянуть начало сражения и вступил в великим князем Литовским в переговоры, имея целью дождаться подхода армии мурзы Едигея (Идигу).
Витовт озвучил условия договора — платить Литве дань и чеканить на монетах печать и имя Витовта. В представлениях XIV века требование чеканки печати на монетах свидетельствовало о полном подчинении Орды Великому княжеству Литовскому. Темир-Кутлуг изъявил готовность быть данником литовским, но относительно чеканки монет с именем литовского князя просил дать ему на размышление три дня. Витовт не возражал, он согласился подождать. В это самое время подоспел мурза Едигей, и соотношение сил резко переменилось.
Едигей просил Витовта о личной встрече. Когда они сошлись с глазу на глаз, мурза сказал великому князю: «Храбрый князь, если Темир-Кутлуг хочет быть твоим сыном, так как он моложе тебя, то, в свою очередь, будь ты моим сыном; я старше тебя; поэтому плати мне дань и вели изображать мою печать на литовских монетах».
Ответ Едигея взбесил литовского князя. Витовт приказал выводить войско из укреплённого лагеря. Переправившись через реку, литовско-русская армия выстроилась в боевые порядки. Впереди союзных ратей располагалась артиллерия и строй арбалетчиков. Татарское войско было построено в шесть больших корпусов. Резервный полк под командованием самого ногайского мурзы скрывался в овраге позади большого кула (полка).
Битву начали союзники. Первый удар заставил татар дрогнуть. На флангах союзные воска начали теснить ордынцев. Видя, что татары под ударами конных русско-литовских хоругвей начали отступать, Витовт бросил в бой последний резерв: польских, литовских и немецких рыцарей. Это решение оказалось для союзного войска роковым: то, что виделось отступлением, на самом деле было обычным тактическим приёмом ордынцев. Татары притворно отступили в степь, погнавшаяся за ними тяжелая конница союзников утомилась. Татарская армия развернулась и Едигей ударил свежими туменами и личной гвардией по флангам литовско-русского войска, прорываясь союзникам в тыл.
Ордынцы окружили армию Витовта и, не вступая с ней в ближний бой, наносили страшные потери, обстреливая из луков на безопасном расстоянии. Союзная конница понесла тяжелые потери. Остатки её бросились назад, татары преследовали отступающих и на их плечах ворвались в ряды выстроенной пехоты. Возникшая паника сломала строй пехотинцев. Союзники побежали. Огнестрельное оружие мало им помогло. Неуклюжие и неповоротливые пушки и пищали не могли нанести большой урон быстро маневрирующей татарской коннице.
Первыми бежали с поле боя татары Тохтамыша, следом за ними Великий князь Литовский Витовт Кейстутович с братом Сигизмундом и боярами и всё остальное войско, оставляя позади себя убитых, раненых, обозы и оружие. Многим пехотинцам удалось перебраться на другой берег Ворсклы, однако и там они не могли быть в безопасности. Казалось бы спасшиеся воины гибли под градом татарских стрел.
Ордынцы Едигея и Темир-Кутлуга захватили брошенный союзниками лагерь.