Отдохнув и набравшись сил, в мае 1807 года противники возобновили боевые действия. Не сумев добиться успеха в сражении при Гуттштадте, Беннигсен отвёл свою 90-тысячную армию к хорошо укреплённой позиции у города Гейльсберг. Планы Наполеона были известны русскому командованию: отрезать наши войска от Кёнигсберга и затем атаковать всеми силами 115-тысячной армии.
В 10 часов утра 10 июня 1807 года корпус Мюрата атаковал русский авангард под командованием генерала Бороздина и почти обратила его в бегство. Вовремя подошедшие войска князя Багратиона спасли части Бороздина. Но к французам тоже подошло подкрепление – 30-тысячный корпус маршала Сульта – и русские отошли под защиту своих укреплений. Залпы нашей артиллерии остановили французов. Начальник артиллерии князя Багратиона полковник Алексей Петрович Ермолов прославился в том сражении выдержкой, с которой допускал противника на минимальное расстояние, а затем расстреливал артиллерийскими залпами в упор. Даже после того, как на поле боя появился свежий корпус маршала Лана, продвинуться ближе к русским позициям французы не смогли. В 10 часов вечера в сражение вступил корпус маршала Нея, и Наполеон вновь попытался овладеть позициями русских, но огонь русской артиллерии вновь прервал атаку.
Оставив за собой поле битвы и понеся меньшие потери, чем неприятель (8 и 13 тысяч человек, соответственно), русские в сражении при Гейльсберге одержали тактическую победу. Донесение об этом и захваченное в бою французское знамя Беннигсен тотчас отправил императору. Узнав подробности, Александр I сказал: «Только следствия могут показать нам важность Гейльсборгского сражения и будем ли уметь им воспользоваться».