Bắc Bình Vương được tinh quân nhà Thanh đã sang đóng ở Thăng Long, lập tức hội các tướng sĩ để bàn việc đem binh ra đánh, các tướng đều xin hãy chính ngôi tôn, để yên lòng người rồi sẽ khởi binh. Bắc Bình Vương bèn sai đắp đàn ở núi Bàn Sơn, ngày 25 tháng mười một năm mậu thân (1788), Vương làm lễ lên ngôi Hoàng Đế.
Núi Tam Điệp trước gọi là đèo Ba Dội ở chỗ phân biệt địa giới tỉnh Ninh Bình và tỉnh Thanh Hóa. thống lĩnh thủy bộ đại binh ra đánh giặc Thanh. Ra đến Nghệ An nghỉ lại 10 ngày để kén lấy thêm binh, cả thảy được 10 vạn quân và hơn 100 con voi.
Vua Quang Trung điểm duyệt quân sĩ, truyền dụ nhủ bảo mọi người phải cố gắng đánh giặc giúp nước. Đoạn rồi kéo quân ra Bắc, đến ngày 20 tháng chạp thì đến núi Tam Điệp. Bọn Ngô Văn Sở, Ngô Thì Nhiệm đều ra tạ tội, kể chuyện quân Tàu thế mạnh, sợ đánh không nổi, cho nên phải lui về giữ chỗ hiểm yếu.
Vua Quang Trung cười mà nói rằng: "Chúng nó sang phen này là mua cái chết đó thôi. Ta ra chuyến này thân coi việc quân đánh giữ, đã định mẹo rồi, đuổi quân Tàu về chẳng qua 10 ngày là xong việc. Nhưng chỉ nghĩ chúng là nước lớn gấp 10 nước ta, sau khi chúng thua một trận rồi, tất chúng lấy làm xấu hổ, lại mưu báo thù, như thế thì đánh nhau mãi không thôi, dân ta hại nhiều, ta sao nỡ thế. Vậy đánh xong trận này, ta phải nhờ Thì Nhiệm dùng lời nói cho khéo để đình chỉ việc chiến tranh. Đợi mươi năm nữa, nước ta dưỡng được sức phú cường rồi, thì ta không cần phải sợ chúng nữa."
Vua Quang Trung truyền cho tướng sĩ ăn tết Nguyên Đán trước, để đến hôm trừ tịch thì cất quân đi, định ngày mồng 7 tháng giêng thì vào thành Thăng Long mở tiệc ăn mừng. Đoạn rồi, truyền lệnh cho ba quân đến nghe lệnh điều khiển. Đại tư mã Sở, Nội Hầu Lân đem tiền quân đi làm tiên phong. Hô hổ Hầu đem hậu quân đi đốc chiến.
Đại đô đốc Lộc, Đô đốc Tuyết đem hữu quân cùng thủy quân, vượt qua bể vào sông Lục Đầu. Rồi Tuyết thì kinh lược mặt Hải Dương, tiếp ứng đường mé đông; Lộc thì kéo về vùng Lạng Giang, Phượng Nhỡn, Yên Thế để chặn đường quân Tàu chạy về.
Đại đô đốc Bảo, đô đốc Mưu đem tả quân cùng quân tượng mã đi đường núi ra đánh phía tây. Mưu thì xuyên ra huyện Chương Đức (nay là Chương Mỹ), tiện đường kéo thẳng đến làng Nhân Mục, huyện Thanh Trì, đánh quân Điền Châu; Bảo thì thống suất quân tượng mã theo đường huyện Sơn Lãng ra làng Đại Áng thuộc huyện Thanh Trì tiếp ứng cho mặt tả. Năm quân được lệnh đều thu xếp đâu đấy, đến hôm 30 khua trống kéo ra Bắc. Khi quân sang sông Giản Thủy 124 , cánh nghĩa quân của nhà Lê.
Giản Thủy chắc là bến đò Giản ở giáp giới tỉnh Ninh Bình và Hà Nam bây giờ. tan vỡ chạy cả. Vua Quang Trung thân đốc các quân đuổi theo đến huyện Phú Xuyên bắt sống hết được toán quân Tàu đóng ở đấy, không một người nào chạy thoát được; vì thế cho nên không có tin báo về, những quân Tàu đóng ở làng Hà Hồi và làng Ngọc Hồi không biết gì cả. Nửa đêm ngày mồng 3 tháng giêng năm Kỷ Dậu (1789) quân vua Quang Trung đến làng Hà hồi vây kín đồn giặc, rồi bắc loa lên gọi, các quân dạ rầm cả lên, có hàng muôn người. Quân canh đồn bấy giờ mới biết, sợ hãi thất thố, đều xin hàng, bởi thế, lấy được hết cả quân lương và đồ khí giới. Sáng mờ mờ ngày mồng năm, quân Tây Sơn tiến lên đến làng Ngọc Hồi, quân Tàu bắn súng ra như mưa. Vua Quang Trung sai người lấy những mảnh ván, ghép ba mảnh lại làm một, lấy rơm cỏ giấp nước quấn ở ngoài, rồi sai quân kiêu dũng cứ 20 người khiêng một mảnh, mỗi người dắt một con dao nhọn, lại có 20 người cầm khí giới theo sau. Vua Quang Trung cưỡi voi đi sau đốc chiến, quân An Nam vào đến gần cửa đồn, bỏ ván xuống đất, rút dao ra, xông vào chém, quân đi sau cũng kéo ùa cả vào đánh. Quân Tàu địch không nổi, xôn xao tán loạn, xéo lẫn nhau mà chạy. Quân Nam thừa thế đánh tràn đi, lấy được các đồn, giết quân Thanh thây nằm ngổn ngang khắp đồng, máu chảy như tháo nước. Quân các đạo khác cũng đều được toàn thắng. Quan nhà Thanh là đề đốc Hứa Thế Hanh, tiên phong Trương Sĩ Long, tả dực Thượng Duy Thăng đều tử trận cả; quan phủ Điền Châu là Sầm Nghi Đống đóng ở Đống Đa bị quân An Nam vây đánh cũng thắt cổ mà chết.
Tôn Sĩ Nghị nửa đêm được tin báo, hoảng hốt không kịp thắng yên ngựa và mặc áo giáo, đem mấy tên lính kỵ chạy qua sông sang Bắc. Quân các trại nghe tin như thế, xôn xao tan rã chạy trốn, tranh nhau sang cầu, một lát cầu đổ, sa cả xuống sông chết đuối, sông Nhị Hà đầy những thây người chết.
Vua Chiêu Thống cũng theo Tôn Sĩ Nghị sang sông cùng với bà Hoàng Thái Hậu và mấy người cận thần chạy sang Tàu.
Đạo quân Vân Nam và Quý Châu đóng ở miền Sơn Tây nghe tin Tôn Sĩ Nghị đã thua, cũng rút quân chạy về. Ngày hôm ấy vua Quang Trung đốc quân đánh giặc, áo ngự bào bị thuốc súng bắn vào đen như mực. Đến trưa thì vào thành Thăng Long.
Về sau bọn khách trú ở Thăng Long làm cái đền thờ Sầm Nghi Đống ở ngõ Sầm Công, sau Hàng Buồm, nữ sĩ Hồ Xuân Hương có vịnh bài tuyệt cú rằng: Ghé mắt trông ngang thấy bảng treo, Kìa đền Thái thú đứng cheo leo. Ví đây đổi phận làm trai được, Thì sự anh hùng há bấy nhiêu?
Trước đất Phú Thọ, Vĩnh Yên thuộc về địa hạt tỉnh Sơn Tây. tướng đem binh đuổi đánh quân nhà Thanh đến cửa Nam Quan. Những dân Tàu ở gần Lạng Sơn sợ khiếp, đàn ông, đàn bà dắt díu nhau mà chạy, từ cửa ải về mé bắc hơn mấy trăm dặm, tịnh không nghe thấy tiếng một người nào?
Vua Quang Trung vào thành Thăng Long, hạ lệnh chiêu an, phàm những người Tàu trốn tránh ở đâu ra thú tội, đều được cấp cho áo mặc, lương ăn. Lại bắt được cả ấn tín của Tôn Sĩ Nghị bỏ lại, trong những giấy má bắt được có tờ mật dụ của vua Càn Long nói rằng: " Việc quân nên từ đồ, không nên hấp tấp. Hãy nên đưa hịch truyền thanh thế đi trước, và cho các quan nhà Lê về nước cũ hợp nghĩa binh, tìm tự quân nhà Lê đem ra đứng đầu để đối địch với Nguyễn Huệ, thử xem sự thể thế nào. Nếu lòng người nước Nam còn nhớ nhà Lê, có quân ta kéo đến, ai là chẳng gắng sức. Nguyễn Huệ tất phải tháo lui; ta nhân lấy dịp ấy mà sai Tự quân đuổi theo, rồi đại binh của ta theo sau, như thế không khó nhọc mấy nỗi mà nên được công to, đó là mẹo hay hơn cả. Ví bằng suốt người trong nước, nửa theo đằng nọ, nửa theo đằng kia, thì Nguyễn Huệ tất không chịu lui. Vậy ta hãy đưa thư sang tỏ bảo đường họa phúc xem nó đối đáp làm sao. Đợi khi nào thủy quân ở Mân, Quảng đi đường bể sang đánh mặt Thuận Hóa và Quảng Nam rồi, bộ binh sẽ tiến lên sau. Nguyễn Huệ trước sau bị địch, thế tất phải chịu thua. Bấy giờ ta sẽ nhân mà là ơn cho cả hai bên; tự đất Thuận Hóa Quảng Nam trở vào Nam, thì cho Nguyễn Huệ; tự châu Hoan, châu Ái trở ra Bắc thì phong cho Tự quân nhà Lê. Ta đóng đại binh lại để kiềm chế cả hai bên, rồi sẽ có xử trí về sau".
Ngô Thì Nhiệm vâng lệnh làm thư đại khái nói rằng: "Nước Nam vốn không dám chống cự với đại quốc, nhưng chỉ vì Tôn Sĩ Nghị làm nhỡ việc cho nên phải thua. Vậy nay xin tạ tội và xin giảng hòa."
Vua Quang Trung sai sứ đem thư sang Tàu, và lại sai đem những quân nhà Thanh đã bắt được, để ở một nơi, cấp cho lương thực, đợi ngày cho về nước. Xếp đặt mọi việc xong rồi, đem quân về Nam, lưu Ngô Văn Sở và Phan văn Lân ở lại tổng thống các việc quân quốc; còn những việc từ lệnh giao thiệp với nước Tàu thì ủy thác cho Ngô Thì Nhiệm và Phan Huy Ích cho được tự tiện mà khu xử, hễ không có việc gì quan hệ thì bất tất phải đi tâu báo mà làm gì.