Tháng 10 năm Bính Ngọ (1426), Vương Thông được cử sang làm Tổng binh, thay Trần Trí chỉ huy quân Minh ở nước ta. Vương Thông đã mở cuộc phản công chiến lược nhằm truy quét toàn bộ nghĩa quân Lam Sơn đang hoạt động ở vùng ngoại vi thành Đông Quan, sau đó mở đường tiến vào Thanh Hóa, Nghệ An tiêu diệt bộ chỉ huy nghĩa quân. Chỉ để lại một bộ phận binh lực nhỏ giữ thành, Vương Thông tung gần hết 10 vạn quân vào cuộc phản công, chia làm ba cánh tiến ra chiếm lĩnh các vị trí trọng yếu vào ngày mồng 6 tháng 10 Bính Ngọ (05-11-1426).
Cổ Lãm (sau là tổng Thắng Lãm, tên Nôm là làng Xốm, nay thuộc các phường Phú Lãm, Phú Cường, Văn Khê, quận Hà Đông, Hà Nội) là một vị trí chiến lược trên con đường bộ từ Thanh Oai về Đông Quan. Địa hình khu vực này cơ bản thấp trũng có một số gò đất cao. Phía bắc cánh đồng Cổ Lãm có cầu Ba La (Hà Đông). Nghĩa quân Lam Sơn đã bố trí quân mai phục ở bên đường phía dưới cây cầu này.
Sau khi bố trí xong trận địa mai phục, một cánh quân do Phạm Văn Xảo và Trịnh Khả chỉ huy tấn công vào đội quân của Sơn Thọ, Mã Kỳ ở cầu Thanh Oai. Quân Minh vội tung lực lượng đuổi đánh. Nghĩa quân Lam Sơn giả thua, vừa đánh vừa rút chạy về phía Cổ Lãm. Quân định đuổi theo, lọt trọn vào trận địa mai phục. Lúc này, phục binh Lam Sơn đồng loạt nổi lên, đánh tạt vào hai bên sườn đội hình vận động của địch. Quân địch bị đánh bất ngờ, cả người và ngựa lại bị sa lầy nên không thể chống đỡ. Nghĩa quân Lam Sơn tiêu diệt tại trận hơn 1.000 tên địch. Các tướng Sơn Thọ, Mã Kỳ hốt hoảng, không dám trở lại đường cầu Thanh Oai mà tìm cách tháo chạy về thành Đông Quan. Nghĩa quân đã truy kích giặc đến tận Nhân Mục (Nhân Chính, Thanh Xuân), tiêu diệt thêm nhiều sinh lực địch và bắt sống khoảng 500 quân Minh. Trận Cổ Lãm chỉ diễn ra trong một buổi chiều, nghĩa quân giành một thắng lợi quan trọng.
Lê Ngân