Армии встретились под местечком Грюнвальд 15 июля 1410 года. Тевтонские войска расположились рядом между деревеньками Таненберг и Людвигсдорф, оставив обоз рядом в Грюнвальдом. Польша и ВКЛ разместили к югу от Таненберга. Бой начался во второй половине дня.
Первой в битву по приказу Витовта отправилась легкая татарская конница, успешно уничтожившая вражеские пушки и арбалетчиков. Им навстречу выступила тяжелая конница Валленрода, после чего начался тяжелый бой. Ягайло со своим войском на этом этапе не вмешивался. Тевтонцы попытались нанести удар в центр войск противника, чтобы взять в два отдельных кольца польское и литовское войско. Армия Витовта в это время была вынуждена отступать, но, дойдя до обозов, начала сильное сопротивление. Тевтонцы развернулись и ударили по польским войскам. Это был критический момент битвы. Поляки были частично окружены, но литовские войска перестроились и атаковали тевтонцев с другой стороны, зажав их таким образом в клещи. После гибели маршала Валленрода и магистра Ульрика фон Юнгингена тевтонцы ударились в бегство – добравшись до собственных обозов, они продолжили сопротивление оттуда, однако из-за отсутствия командования оно было неорганизованным. Началась паника и многие бежали. Погоня за отступающими длилась до самой ночи.