1920년 10월 22일 새벽 천수평 전투에서 김좌진(金佐鎭)이 지휘하는 북로군정서(北路軍政署) 부대는 일본군 기병 부대를 기습 공격하여 섬멸하였다. 그러자 인근에 주둔하고 있던 일본군은 동지대의 예비대를 투입하고, 중포병 부대의 포병 화력을 이용하여 대규모 공격을 하였다. 김좌진 부대는 지리상 유리한 고지를 점령하여 일본군의 공격을 효과적으로 방어하였다. 그러나 계속적인 일본군의 공격으로 부담이 가중되어 전장을 이탈할 필요가 있었다. 이러한 상황에서 홍범도(洪範圖)가 이끄는 대한독립군(大韓獨立軍) 등이 어랑촌 전투에 가담하니 일본군의 공격이 분산되었다. 또한 오전에 시작된 전투가 시간이 경과되어 점차 야간에 접어들자 전투 현장을 벗어날 수 있는 여건이 조성되었다. 김좌진 부대 등은 홍범도 부대와 협조된 방어를 통해서 일본군 부대를 격파한 후 안도현 방면으로 야간에 이동할 수 있었다.
어랑촌 전투에서는 김좌진의 북로군정서 부대와 홍범도 연합부대 등 독립군 주요 부대가 전투에 참여하였다. 그리고 일본군은 동지대 예비대, 기병연대 등 당시 일본군이 동원할 수 있는 주요 부대를 전부 동원하였다. 또한 일본군은 전투 과정에서 함경북도 무산에 위치한 보병 2개 중대를 비롯하여 회령의 74연대 1대대 병력까지 어랑촌 전투에 투입을 요청하였다. 어랑촌 전투는 청산리 전쟁 중 최대 전력이 투입된 전투였다.
교전 결과 독립군은 100여 명의 사상자가 발생하였으며, 일본군 역시 상당한 사상자가 발생하였다. 북로군정서 보고로는 1600여 명의 사상자가 발생하였으며, 상해 임시정부 발표에서는 전사자가 300여 명에 이르렀다 하였다. 실제 전투에 주요 지휘관으로 참여하였던 이범석의 자서전에서는 기병연대장을 비롯하여 1000여 명의 사상자가 발생하였다고 하였다. 일본 측 자료에서는 전사자 3명, 부상자 12명이 발생하였다고 기록하였다.