Cuối năm 1426, chiến sự phía tây thành Đông Quan bắt đầu diễn ra những cuộc đụng độ lớn. Vương Thông đã dẫn 10 vạn quân chia làm ba đạo tiến đánh cánh quân của Lý Triện, Đỗ Bí đang đóng doanh tại Ninh Kiều (Chương Mỹ, Hà Nội ngày nay). Sở dĩ Vương Thông không dồn quân vào một mũi tiến công duy nhất mà chia quân ra ba hướng là vì hắn muốn thực hiện bao vây, diệt gọn toàn bộ lực lượng quân Lam Sơn ở tây Đông Quan, từ đó tạo đà tiến công lớn cho quân Minh tiếp tục đánh tỏa ra. Tướng giặc đánh giá rằng quân của Trịnh Khả, Phạm Văn Xảo còn bận tay ở thành Tam Giang, Lý Triện và Đỗ Bí sẽ khó chống nổi đòn tổng lực của quân Minh.
Vương Thông đã đánh giá không chính xác về khả năng đánh tốc chiến của quân Lam Sơn. Tướng lĩnh của ta không chấp nhận ở yên một để cho địch vây khốn. Ngay lúc mà quân Minh đang triển khai thiết lập vòng vây thì Lý Triện, Đỗ Bí đã tung quân đánh trước. Ngày 5.11.1426, quân ta nhắm đánh vào cánh quân của Sơn Thọ, Mã Kỳ là cánh quân mỏng yếu nhất trong ba cánh bao vây của quân Minh. Lý Triện và Đỗ Bí đặt mai phục ở cánh đồng Cổ Lãm (thuộc Thanh Oai, Hà Nội ngày nay) rồi cho du binh đánh vào trại của Sơn Thọ, Mã Kỳ để nhử địch.
Thấy bóng quân Lam Sơn, Kỳ và Thọ thúc quân sáp lại đánh. Quân ta vờ tháo chạy dụ địch đuổi theo qua cầu Tam La (thuộc Hà Đông, Thanh Oai, Hà Nội ngày nay), là chỗ bùn lầy khó đi. Thình lình phục binh nổi lên cùng voi chiến xông ra đánh tạt ngang vào đội hình quân Minh, thả sức chém giết. Hơn 1.000 quân Minh trong chốc lát đã bỏ thây tại trận. Sơn Thọ và Mã Kỳ hết sức kinh sợ, dẫn quân chạy ngược về thành Đông Quan. Quân ta truy kích trên đoạn đường dài mấy mươi dặm, đến tận cầu Nhân Mục mới ngưng. Giặc phơi thây dọc đường rút chạy, thêm 500 tên bị bắt sống.
Vòng vây mà Vương Thông dự định tạo ra nhanh chóng bị chọc thủng một mảng lớn. Không dừng lại ở đó, Lý Triện và Đỗ Bí thừa thắng đem quân tiến đánh bọc hậu cánh quân của Phương Chính, Lý An hòng tạo ra sự tan rã dây chuyền trong hàng ngũ giặc. Thế nhưng Phương Chính và Lý An khi hay tin Sơn Thọ và Mã Kỳ bại trận đã kịp thu quân về thành. Quân Lam Sơn cũng thu quân vào lúc chậm tối. Lúc này Vương Thông với lực lượng hùng mạnh vẫn đóng tại Cổ Sở. Hay tin hai cánh quân đã bị quân Lam Sơn bức rút, Thông cho người vào thành lệnh cho toàn bộ số quân tướng đã rút về phải quay ngược trở ra, tập trung tại bến Cổ Sở ngay trong đêm 5.11.1426.
Từ kế hoạch bao vây, quân Minh chuyển sang kế hoạch dồn quân thành một khối để đánh vỗ mặt vào căn cứ Ninh Kiều. Hôm sau, ngày 6.11.1426, Lý Triện cùng Đỗ Bí lại đem tượng binh, bộ binh đến đầu cầu Cổ Sở khiêu chiến. Vương Thông đã có phòng bị trước, sai quân đào bẫy gài chông sắt, đan tra làm lá chắn. Khi tượng binh Lam Sơn tiến đánh, quân Minh vờ vứt lá chắn bỏ chạy. Tượng binh quân ta thừa thế xông tới, giẫm phải chông sắt, thế quân khự lại. Quân Minh dùng súng và hỏa tiễn bắn ra, quân ta chết nhiều, phải rút lui.
Vương Thông thắng được một trận, bèn thúc toàn quân đánh tràn. Lý Triện, Đỗ Bí liệu thế binh ít không chống nổi, cho đốt bỏ doanh trại ở Ninh Kiều, lui quân về giữ Cao Bộ (xã Trung Hòa, Chương Mỹ, Hà Nội ngày nay), đồng thời cho người cấp báo với cánh quân của Đinh Lễ, Nguyễn Xí, Trương Chiến, Lê Hối đang đóng ở Tham Đàm (Thanh Trì, Hà Nội ngày nay), đề nghị đem quân ứng cứu. Quân của Đinh Lễ, Nguyễn Xí nắm giữ là đạo quân tinh nhuệ nhất trong các đạo quân bắc tiến, trong đó có cả đội Thiết đột đặc biệt tinh nhuệ cũng được Bình Định vương Lê Lợi gởi gắm cho Lễ và Xí, hai chiến tướng rất được Lê Lợi tín nhiệm. Nhận được tin cấp báo, Đinh Lễ, Nguyễn Xí cùng các tướng tức tốc cho quân lên đường tiếp viện, hội quân ở Cao Bộ. Cuộc hành quân diễn ra bí mật trong đêm, giặc chưa dò biết được.
Trong khi đó, Vương Thông dẫn quân đánh vào doanh trại quân ta ở Ninh Kiều thì chỉ thấy một nơi trống vắng, trại thì đều đã cháy ra tro. Quân Minh tạm đóng tại Ninh Kiều, dò tin tức quân ta. Biết được Lý Triện và Đỗ Bí đã đóng giữ Cao Bộ, Vương Thông bàn với các tướng Minh chia quân làm hai ngả đường tiến đánh. Đạo chính binh do Vương Thông chỉ huy đi theo đường cái từ Ninh Kiều qua Tốt Động, Chúc Động (thuộc Chúc Sơn, Chương Mỹ, Hà Nội ngày nay) đánh thẳng vào mặt phía động Cao Bộ. Đạo kỳ binh theo đường nhỏ từ Chúc Động đi vòng lên mặt bắc Cao Bộ, đem theo súng lớn, định đặt súng bắn vào phía sau quân Lam Sơn khi quân ta phải đối trận với cánh quân chính của Vương Thông.
Tướng lĩnh quân Lam Sơn biết rằng trên đường tiến quân giặc Minh tất phải đi qua Tốt Động, Chúc Động nên đem quân tinh nhuệ mai phục sẵn để đợi. Nghĩa quân lại bắt được gián điệp của quân Minh, tra khảo ra được kế hoạch của giặc định đặt súng bắn vào phía sau quân ta, hễ nghe tiếng pháo thì các hướng quân Minh sẽ cùng tiến đánh mạnh. Lý Triện, Đinh Lễ bèn bàn với các tướng tương kế tựu kế, lệnh cho các quân mai phục khi nghe tiếng súng thì vẫn nằm im để chờ giặc tiến vào. Một đêm mưa gió tháng 11.1426, hai đạo quân Minh từ hai ngả tiến đánh Cao Bộ. Đạo kỳ binh giặc tiến qua Chúc Động, chính binh của Vương Thông thì gần đến Tốt Động.
Khoảng canh năm, quân ta chủ động cho phát pháo. Vương Thông tưởng đạo kỳ binh đã tiến vào thuận lợi, thúc quân tiến gấp để phối hợp. Chờ giặc lọt vào trận địa mai phục ở Tốt Động, phục binh Lam Sơn bốn bề nổi lên đánh quyết tử. Trời mưa khiến đường xá lầy lội, người ngựa quân Minh bị mắc lầy, trước sau không ứng cứu được nhau. Quân Lam Sơn thừa thế chém giết thả cửa, tượng binh từ Cao Bộ xông tới băm nát đội hình hành quân của giặc. Ở phía Chúc Động, đạo kỳ binh cũng trúng mai phục và thiệt hại nặng nề. Vương Thông hết đường chống đỡ, cùng quân tướng mạnh ai nấy chạy, giẫm đạp cả lên đồng đội. Đến Ninh Kiều, giặc tranh nhau qua cầu, rơi xuống sông chết đuối nhiều vô kể. Binh bộ thượng thư nước Minh là Trần Hiệp, nội quan Lý Lượng, đô chỉ huy Lý Đằng đều chết trong đám loạn quân. Vương Thông cũng bị thương, may sao thoát được. Các tướng Minh khác là Mã Kỳ, Mã Anh, Sơn Thọ… ai nấy đều cắm đầu chạy thục mạng về thành Đông Quan, đóng cửa thành cố thủ.
Kết thúc trận chiến, số quân Minh bị quân Lam Sơn giết chết và chết vì giẫm đạp lên nhau lên đến hơn 5 vạn tên, chưa kể số giặc bị chết đuối mà theo các sử sách nước ta ghi lại một cách hình tượng hóa là “Giặc chết đuối rất nhiều, nước sông ở Ninh Kiều do vậy mà tắc nghẽn”(theo Đại Việt Sử Ký Toàn Thư). Ngoài ra, chừng 1 vạn quân Minh bị bắt sống. Khí giới, xe cộ, lương thảo, lừa ngựa, vàng bạc, quân nhu mà quân Minh để lại dọc đường nhiều không kể xiết, đều rơi vào tay quân Lam Sơn. Thế lực quân ta sau trận đại thắng đã áp đảo quân Minh. Trên thực tế, Vương Thông cùng đạo viện binh của hắn đã bị đánh tan tác. Trận chiến tại Ninh Kiều (hay còn gọi là trận Tốt Động – Chúc Động) là một trong những trận đại thắng nổi tiếng trong toàn bộ lịch sử Việt Nam, tiêu biểu cho tinh thần “lấy nhỏ thắng lớn, lấy ít địch nhiều”. Trong Bình Ngô Đại Cáo, Nguyễn Trãi đã mô tả về trận này với âm hưởng hùng tráng:
Ninh Kiều chi huyết thành xuyên, lưu tinh vạn lý
Tốt Động chi thi tích dã, di xú thiên niên.
Trần Hiệp tặc chi phúc tâm, ký kiêu kỳ thủ
Lý Lượng tặc chi gian đố, hựu bạo quyết thi
Vương Thông lý loạn nhi phần giả ích phần
Mã Anh cứu đấu nhi nộ giả ích nộ
Bỉ trí cùng nhi lực tận, thúc thủ đãi vong
Tạm dịch:
Ninh Kiều máu chảy thành sông, tanh hôi vạn dặm
Tốt Động thây chất đầy nội, nhơ để ngàn năm
Phúc tâm quân giặc: Trần Hiệp đã phải bêu đầu
Mọt gian kẻ thù: Lý Lượng cũng đành bỏ mạng.
Vương Thông gỡ thế nguy, mà đám lửa cháy lại càng cháy
Mã Anh cứu trận đánh mà quân ta hăng lại càng hăng
Bó tay để đợi bại vong, giặc đã trí cùng lực kiệt
(còn nữa)
Quốc Huy/Một Thế Giới