Tây Sơn tiến quân lên đánh lũy Trấn Ninh tháng 1/1802

Từ khi thất thủ Phú Xuân, vua Cảnh Thịnh ngày đêm kíp ra Bắc Hà, đổi niên hiệu là Bảo Hưng và truyền hịch đi các trấn để lấy viện binh rồi sai em là Nguyễn Quang Thùy đem binh mã vào giữ Nghệ An. Đến tháng 11, vua Tây Sơn đem quân 4 trấn ở xứ Bắc và quân Thanh Hóa, Nghệ An, cả thảy được non 3 vạn người, sang sông Linh Giang. Lại sai tướng đem hơn 100 chiếc chiến thuyền vào giữ cửa Nhật Lệ. Bấy giờ có vợ Trần Quang Diệu là Bùi Thị Xuân cũng đem 5.000 thủ hạ đi tòng chinh.

Quan Chưởng Trung Quân Bình Tây Đại Tướng Quân Nguyễn Văn Trương, cùng với Tống Phúc Lương, Đặng Trần Thương giữ ở Linh Giang, thấy quân Tây Sơn thế mạnh phải lui về giữ Đồng Hới. Nguyễn Vương được tin ấy, liền thân chinh đem đại binh ra tiếp ứng, sai Phạm Văn Nhân và Đặng Trần Thường đem quân ra giữ mặt bộ, sai Nguyễn Văn Trương ra giữ mặt bể.

Tháng giêng năm nhâm tuất (1802), vua Tây Sơn sai Nguyễn Quang Thùy tiến quân lên đánh lũy Trấn Ninh; đánh mãi không đổ. Vua Tây Sơn đã toan rút quân về, nhưng Bùi Thị Xuân không chịu, xin cho ra đốc quân đánh trận. Đánh từ sáng sớm đến chiều tối, chưa bên nào được thua. Bỗng có tin rằng thủy quân của Tây Sơn ở cửa Nhật Lệ (cửa Đồng Hới) đã bị Nguyễn Văn Trương phá tan cả. Quân Tây Sơn khiếp sợ bỏ chạy, tướng là Nguyễn Văn Kiên về hàng nhà Nguyễn. 
Vua Tây Sơn đem tàn quân chạy về Bắc, để Nguyễn Văn Thận ở lại giữ Nghệ An.

Nguyễn Vương phá được quân Tây Sơn ở thành Trấn Ninh rồi đem quân về Phú Xuân, để trung quân Nguyễn Văn Trương giữ Đồng Hới, để Tống Phúc Lương và Đặng Trần Thường giữ Linh Giang.

Trần Quang Diệu và Vũ Văn Dũng ở Quy Nhơn được tin quân Tây Sơn thua ở Trấn Ninh, liệu chống không nổi, bèn đến tháng 3 năm nhâm tuất (1802) bỏ thành Quy Nhơn, đem binh tượng đi đường thượng đạo qua Ai Lao ra Nghệ An, để hội với vua Tây Sơn mà lo sự chống giữ.