Bitwa rozegrała się w południowo-wschodnim rejonie jeziora Pejpus koło wyspy Woroni Kamień. Tuż po nastaniu świtu nastąpił atak rycerstwa niemieckiego. Ciężkozbrojni konni rycerze i piechota zakonu uderzyli w szyku klinowym na centrum Nowogrodzian, składające się z piechoty oraz milicji nowogrodzkiej. Znacznie przerzedzone oddziały Rusinów wycofały się na spadzisty i pokryty lodem brzeg jeziora, gdzie rycerze zakonu nie byli już w stanie wykorzystać swojej siły i utknęli w walce. Nastąpił wówczas atak lewego i prawego skrzydła nowogrodzkiego, który doprowadził do okrążenia sił zakonu.
Ostatni akord bitwy zaczął się w chwili, gdy Newski rzucił do ataku trzymane w rezerwie oddziały. Jeźdźcy obeszli prawe skrzydło armii zakonnej, atakując ją od tyłu. Otoczeni z każdej strony Niemcy i Estowie, stłoczeni na niewielkim obszarze nie byli w stanie przeprowadzić skutecznego ataku. W tej sytuacji piechota nowogrodzka rozpoczęła gwałtowne uderzenie, zrzucając rycerzy z koni za pomocą długich lanc i dobijając ich pchnięciem mieczy.
Powszechnie spotykana informacja o tym, że w czasie odwrotu pod rycerzami załamał się lód i znaczna ich liczba utonęła nie znajduje potwierdzenia w źródłach historycznych.