Mimo że załogę postawiono w stan alarmu, III batalion 1 pułku piechoty Legionów kapitana Józefa Marjańskiego, o świcie 22 sierpnia brawurowym atakiem przerwał linię obrony 492 pułku strzelców i wdarł się do miasta od strony przedmieścia Skorupy, torując drogę innym pododdziałom pułku.
Podczas walk ulicznych żołnierzy wsparła ludność cywilna. Do 7:00 miasto opanowano. Rozbito doszczętnie 164 Brygadę Strzelców, biorąc ponad 2 tysiące jeńców, 13 dział, około 30 ckm-ów oraz 3 pociągi z zapasami i sprzętem wojskowym.
Zanim jednak 1 pułk piechoty Legionów zdołał zorganizować obronę miasta, o godzinie 8:15 od południowego zachodu podeszły do Białegostoku straże przednie 16 i części 3 Armii. O godzinie 9:00 od strony Baciut i toru kolejowego z Łap ukazały się tyraliery 2 i 21 Dywizji Strzelców. Przeciwnik nacierał nie zważając na straty. Po dwugodzinnej walce piechota bolszewicka wdarła się na stanowiska 3 kompanii pod Bażantarnią. Kompania polska, której zabrakło amunicji, została w walce na bagnety zepchnięta do miasta. Groźną sytuację opanował kapitan Marjański, który zebrał kilkunastu żołnierzy i rzucił się z nimi do kontrataku, porywając za sobą cofających się legionistów. Zaskoczonych Rosjan ogarnęła panika. Pogromu dopełniła nadbiegająca z pomocą odwodowa 9 kompania. W pościgu wzięto około tysiąc jeńców.