Русский штаб армии находился на крайнем правом фланге, на о-ве Кампергольм.
Узнав о приближении шведов, герцог де Кроа приказал привести войска в боевую готовность и поставить их в одну тонкую линию на протяжении 7 верст, причем, без резерва.
Шведская армия (ок. 9 тыс. при 39 орудиях) вышла к позициям русской армии в 10 часов утра 30 ноября и построилась в две линии. На правом фланге в 1-й линии встали части генерала О. Веллинга, во 2-й линии – кавалерия Вахтмейстера. В центре, в 1-й линии – части генерал-майора К. Поссе, во 2-й – генерал-майора Г. Ю. Майделя. Перед центром на холме Германенсберг была сконцентрирована шведская артиллерия под командой генерал-фельдцейхмейстера барона Юхана Шёблада. На левом фланге расположились части генерал-лейтенанта К. Г. Реншильда и генерал-майора А. Горна в первой линии; за ними, во второй линии, резерв генерал-майора Ю. Риббинга. В промежутке между линиями были поставлены на правом фланге гвардейские гренадеры, а на левом – образцовый Далекарлийский пехотный полк.
Впрочем, есть и иные диспозиции шведской армии, где Рёншильд был справа, а Веллинг – слева.
Сам король Карл расположился перед центром – на передовой.
Увидев шведские войска, де Кроа срочно созвал военный совет. На совете Шереметев, указывая на растянутость позиций армии, предложил оставить часть войск для блокады города, а остальную армию вывести на поле и дать сражение. Это предложение было отвергнуто герцогом, который заявил, что армия не сможет противостоять шведам в поле. На совете было принято решение оставаться на месте, т.е. инициатива оказалась в руках шведского короля.
В отличие от русского командования, которое считало, что ему противостоит 30-тысячная шведская армия, Карл прекрасно знал численность и расположение войск противника. Поняв, что у русских особенно силен центр их позиции, король решил ударить по флангам, прижать русских к крепости и сбросить их в реку. Карл лично руководил своими войсками. Первыми в бой предстояло вступить 500 гренадеров с каждого фланга: они должны были забросать рвы фашинами.
Бой начался в 14 часов.
Благодаря сильному снегопаду (видимость не более 20 шагов) и ветру в лицо противника, шведам удалось провести неожиданную атаку, подойдя вплотную к позициям русских. Первый удар был произведён двумя глубоко построенными треугольными колоннами. Русские войска стояли в одну линию протяжённостью почти 6 км и, несмотря на все свое численное преимущество, линия обороны была очень слабой. Через полчаса ее прорвали сразу в трёх местах. Гренадеры забросали рвы фашинами и взошли на вал. Благодаря быстроте, натиску и слаженности, шведы ворвались в русский лагерь. В русских полках началась паника. Ее усилили крики «Немцы – изменники!», в результате чего солдаты бросились избивать офицеров-иностранцев. Пехота попыталась отступить по понтонному мосту у о-ва Кампергольм, но мост не выдержал большого скопления людей и рухнул, люди начали тонуть. Конница Шереметева отошла по левому берегу Нарвы до Сыренска, где переправилась на другой берег по мосту и ускакала в Псков.
Новоиспеченный главком де Круа с группой иноземных военспецов, спасаясь от избиения собственными солдатами, благоразумно сдался шведам.
Тем временем, на правом фланге разгорелся серьезный бой. Преображенский, Семёновский и Лефортовский полки с примкнувшими к ним солдатами из дивизии А. М. Головина, огородившись возами и рогатками, оказали ожесточённое сопротивление шведам. На левом фланге дивизия Вейде также отбивала все атаки шведов. Шведская колонна Реншильда была расстроена огнём русских гвардейцев. Стремясь укрепить боевой дух своих солдат, Карл прискакал на поле боя, но его личное участие в побоище, не переломило окончательно хода сражения в пользу шведов. Уже погиб генерал-майор Юхан Риббинг, были ранены генералы К. Г. Реншильд и Г. Ю. Майдель, под шведским королём убита лошадь, причем, не одна.