Bảo Ninh tên thật là Hoàng Ấu Phương, sinh tại huyện Diễn Châu, tỉnh Nghệ An, quê ở xã Bảo Ninh, huyện Quảng Ninh (nay thuộc thành phố Đồng Hới), tỉnh Quảng Bình, Việt Nam. Ông là con trai của Giáo sư Hoàng Tuệ (1922 – 1999), nguyên Viện trưởng Viện Ngôn ngữ học. Ông vào bộ đội năm 1969. Thời chiến tranh, ông chiến đấu ở mặt trận B-3 Tây Nguyên, tại tiểu đoàn 5, trung đoàn 24, sư đoàn 10. Năm 1975, ông giải ngũ. Từ 1976-1981 học đại học ở Hà Nội, sau đó làm việc ở Viện Khoa học Việt Nam. Từ 1984-1986 học khoá 2 Trường viết văn Nguyễn Du. Làm việc tại báo Văn nghệ Trẻ. Là hội viên Hội Nhà văn Việt Nam từ 1997.