В бою при Грюнвальде у крестоносцев было 51 «знамя». В их войска насчитывались воины свыше 20 народностей, но преобладали немцы. Тевтонцы имели до 11 тысяч человек, из них около 4 тысяч рыцарей, до 3 тысяч оруженосцев и около 4 тысяч арбалетчиков, в войске были бомбарды, стрелявшие каменными и свинцовыми минами. «Армию Ордена, — отмечал Гейсман, — составляли: а) собственно прусские войска (рыцари, двор гроссмейстера и милиция); б) войска вассальных князей; в) „гости“ или охотники из различных стран Западной Европы и г) наемные войска; всего не менее 14 тысяч, в том числе 16 тысяч всадников и 3 тысяч пехоты». (Гейсман. Краткий курс истории военного искусства. Спб., 1907. С. 105.)
Союзники имели 91 хоругвь, из которых поляки насчитывали литовцы 40 хоругвей. В состав польских войск входило семь хоругвий из уроженцев русских областей, две хоругви наемников и 42 польские хоругви. В литовском войске было 36 русских хоругвей. Кроме поляков, русских и литовцев в состав союзного войска входили так же армяне, волохи и наемники из чехов, моравов, венгров и татар — итого до 10 народностей. Отрядом чехов командовал Ян Жижка, выдающийся полководец и национальный герой Чехии.
Таким образом, союзное войско имело меньшую по сравнения тевтонским разнородность национального состава. При этом полян; насчитывали не менее 15 600 всадников, а литовцы и русские не менее 8 тысяч регулярных всадников, не считая татар (до 3 тысячи человек). Как можно заметить, союзники превосходили тевтонцев численностью; наиболее надежной частью литовского войска были русские полки. Но литовцы имели слабое вооружение, а татарская конница в составе войска была малонадежной. Преимущества же тевтонцев заключались в дисциплине, боевой подготовке и в снабжении.
Поле боя находилось к югу от деревни Танненберг. Это была довольно ровная местность, которая имела несколько гряд невысоких холмов, пересекаемых незначительными оврагами. Противников разделила небольшая лощина.
Боевой порядок союзников, имея двухкилометровую протяженности фронта, состоял из передней, средней и тыльной линий. На правом фланге стояли русские, литовцы и татары под командованием Витовта, на левом — поляки под командованием Зындрама. Смоленские полки находились в центре.
Крестоносцы сначала построились в три линии, а затем, чтобы удлинить свой фронт до 2,5 км, перестроились в две линии. Впереди тевтонского войска, под прикрытием арбалетчиков, были установлены бомбарды. На правом фланге находилось 20 «знамен» под командованием Лихтенштейна, на левом — 15 «знамен» под командованием Валенрода; во второй линии и в резерве — 16 «знамен» под командованием магистра Ульриха Юнгингена. Таким образом, с самого начала сражение грозило вылиться в грандиозный кавалерийский бой.
Магистр находился на левом фланге, около деревни Танненберг Ягайло стоял на холме, позади своего правого фланга.
В 12 часов 15 июля от крестоносцев прибыли гарольды и передали королю два меча. Посылку мечей Ягайло расценил как дерзкое оскорбление. Он объявил пароль и приказал своему войску навязать соломенные повязки для различия в бою. Затем король съехал вниз на равнину, где до 1 тысячи шляхтичей ждали посвящения в рыцари. Рыцари поклялись ему победить или умереть.
Тем временем дождь перестал, небо прояснилось. Забили в литавры, заиграли трубы, поляки запели старинную боевую песню. В это время крестоносцы дали залп из бомбард, но ядра, пролетев через головы союзников, упали в тылу их боевого порядка, не причинив вреда. Начался бой.
По приказу Витовта татарская конница атаковала правый фланг неприятеля. Однако строй крестоносцев не дрогнул, стрелы отскакивали от рыцарских доспехов. В свою очередь, магистр приказал Валенроду перейти в контратаку. Татары, не выдержав стремительного удара, бросились бежать.
Затем в бой включились вторая и третья линии литовско-русского войска, устремившегося на помощь отступавшим татарам. Однако их основные силы также были смяты и отброшены крестоносцами. Дольше всех сопротивлялись Виленская и Трокская хоругви, но и они начали отходить. Девять «знамен» Валенрода преследовали отступавших литовцев. Только три смоленских полка под командой Юрия Мстиславского остались на поле боя, продолжая упорно сопротивляться. Они были окружены шестью «знаменами» Валенрода. В этой схватке один смоленский полк был полностью истреблен, два других пробились к правому флангу поляков и прикрыли его.