Бой начался в 2 часа дня. Благодаря сильному снегопаду (видимость не более 20 шагов) и ветру в лицо противника шведам удалось провести неожиданную атаку, подойдя вплотную к противнику. Первый удар был произведён двумя глубокими клинами. Русские войска стояли в одну линию протяженностью почти 6 километров и несмотря на многократное преимущество, линия обороны была очень слабой. Через полчаса прорыв был в трёх местах. Гренадеры забросали рвы фашинами и взошли на вал. Благодаря быстроте, натиску и слаженности, шведы ворвались в русский лагерь. В русских полках началась паника. Конница Шереметева обратилась в бегство и попыталась перейти реку Нарову вброд. Сам Шереметев спасся, но около 1000 человек утонуло в реке. Панику усилили крики «Немцы — изменники!», в результате чего солдаты бросились избивать офицеров-иностранцев. Пехота попыталась отступить по пантонному мосту у острова Кампергольм, но мост не выдержал большого скопления людей и рухнул, люди начали тонуть.
Главнокомандующий герцог де Круа и ряд других иностранных офицеров, спасаясь от избиения собственными солдатами, сдались шведам. В то же время на правом фланге Преображенский, Семёновский и Лефортовский полки с примкнувшими к ним солдатами из дивизии Головина, огородившись возами и рогатками, оказали ожесточённое сопротивление шведским войскам. На левом фланге дивизия Вейде также отбивала все атаки шведов, шведская колонна генерала Реншильда была расстроена огнём русских гвардейцев. Король Карл сам явился на поле боя, но даже его присутствие, укрепившее боевой дух солдат, не смогло помочь шведам. Бой прекратился с наступлением темноты.
Ночь привела к усугублению беспорядка как в русских, так и в шведских войсках. Часть шведской пехоты, ворвавшись в русский лагерь разграбила обоз и перепилась. Два шведских батальона в темноте приняли друг друга за русских и завязали между собой бой. Русские войска, несмотря на то, что часть войск сохранила порядок, страдали от отсутствия руководства. Связь между правым и левым флангами отсутствовала.