Od początku stycznia 1807 roku Ostrołęka i jej okolice znalazły się w zasięgu działań wojennych. W połowie lutego wojska rosyjskie zbliżały się do Ostrołęki dwoma szlakami.
Od strony południowo-wschodniej szły wojska gen. Essena, a od strony mostu, po prawym brzegu Narwi, z Kolna, nadciągał z wojskiem gen. Wołkonski, który zbliżył się do Stanisławowa nad Szkwą.
Ponieważ Essen nie dotarł dostatecznie blisko do Ostrołęki, francuski generał Savary postanowił wyjść naprzeciw Wołkonskiemu. W mieście pozostawił brygadę gen. Campany (z dywizji Gazena) i brygadę gen. Ruffina (z dyw. marszałka Oudinot'a).
Pod Stanisławowem, 15 lutego, doszło do walk i Wołkonski musiał się wycofać. Gazen pozostał, aby ubezpieczać teren przed Rosjanami, a Savary wrócił do Ostrołęki, do której zdążył już dotrzeć Essen.
Rosjanie nadciągali w sile około 30 tys. wojska. Ostrołęki broniło osiem batalionów liczących 5400 żołnierzy, nie licząc artylerii. Oddziały te obsadziły piaszczyste wydmy otaczające miasto. Wywiązała się bitwa.
Trzy silne kolumny piechoty rosyjskiej natarły na obronę francuską i zepchnęły ją z wydm. Rosjanie parli do miasta, chcąc zawładnąć mostem. Grenadierzy Ruffina musieli wycofać się na ulice Ostrołęki i zatrzymali się przy kościele farnym. Na pomoc przyszła im brygada gen. Campany.
Generał został trafiony kulą. Walczących wspierała dodatkowo artyleria zza Narwi. Dwa natarcia Rosjan zostały odparte. W tej sytuacji Savary polecił Oudinot'owi ruszyć do Ostrołęki z jego grenadierami, a Suchet'owi z częścią dragonów. Zwiększyło to siły do 19 tys. żołnierzy. Około godz. 14.00 wkroczyli oni do miasta.
Rosjanie natomiast stanęli w odległości strzału armatniego, uformowani w kolumny piechoty i szwadrony kawalerii.
Prawym skrzydłem Francuzów dowodził Oudinot, centralnym gen. Suchet, a lewym gen. Reille. Kawaleria zaś stanęła w odwodzie.
Pod osłoną silnego ognia artyleryjskiego wojska ruszyły do walki. Lewe skrzydło Rosjan uległo załamaniu i Essen zarządził odwrót, a Savary nacierając ciągle, dotarł do Suska. Nadeszła noc, więc Francuzi rozlokowali nocleg, a Rosjanie odeszli w kierunku Zambrowa.
Straty szacowane są różnie. Według Savary'ego pod Ostrołęką zabito 500–600 Rosjan, natomiast 1900 zostało rannych. Straty francuskie szacuje on na 900 rannych i prawie wcale zabitych. Biuletyn Wielkiej Armii podaje natomiast 60 zabitych i 400–500 rannych.
Na tle kampanii 1806–1807 bitwa ostrołęcka ma pewną osobliwość. Polega ona na tym, że stoczyły ją ze sobą korpusy obserwacyjne znajdujące się na skrzydłach swych armii.
Zadania obu tych korpusów były defensywne. Rozbicie przeciwnika byłoby pożądane, ale w warunkach zupełnej pewności, bez podejmowania ryzyka. Essen otrzymał rozkaz atakowania Savary'ego, by pobiwszy go móc przybyć z pomocą głównym siłom Bennigsena w Prusach.
Porażka pod Ostrołęką udaremniła ten plan, ale zdaje się nie wpłynęła decydująco na dalszy przebieg wydarzeń. Zwycięstwo Savary'ego nie miało wielkiego znaczenia dla Napoleona, gdyż Essen nie został rozbity. Ważne było to, że przyszło ono w tydzień po krwawej i niezbyt chlubnej dla Napoleona bitwie pod Iławą Pruską, więc można je było wykorzystać propagandowo dla umocnienia morale armii.
Walki pod Pułtuskiem i Gołyminem miały znaczenie dla całej kampanii, natomiast bitwa ostrołęcką decydowała o bezpieczeństwie skrzydeł głównych armii.
Zwycięstwo Savary'ego dało jednak Napoleonowi swobodę w rozwijaniu akcji w Prusach bez obawy o linie komunikacyjne i bezpieczeństwo Warszawy.