Николай Костомаров родился 4 (16) мая 1817 года в селе Юрасовке Острогожского уезда Воронежской губернии (ныне — в Ольховатском районе Воронежской области). Поскольку он был рождён до брака местного помещика Ивана Петровича Костомарова с крепостной Татьяной Петровной Мельниковой, согласно законам Российской империи он считался крепостным своего собственного отца.
Смерть Ивана Костомарова поставила его семью в тяжёлое юридическое положение. Николай, рождённый «до венца», стал наследником ближайших родственников отца — Ровневых.
Оставшись с небольшим достатком, мать перевела Николая из московского пансиона в пансион в Воронеже, ближе к дому. Обучение там было дешевле, но уровень преподавания оставлял желать лучшего, и мальчик едва выдерживал скучные уроки. Пробыв около двух лет в этом пансионе, он был отчислен за «шалости» и перешёл в Воронежскую гимназию (1831). Окончив курс в 1833 году, Николай стал студентом историко-филологического факультета Харьковского университета.
Уже в начале учёбы проявились выдающиеся способности Костомарова, что принесло ему прозвище «enfant miraculeux» («чудо-ребёнок»). Однако низкий уровень преподавания истории в Харьковском университете сделал его студенческую жизнь беспорядочной до прихода на кафедру всеобщей истории М. М. Лунина в 1835 году.
После года пребывания в Петропавловской крепости Костомаров был переведён в Саратов и отдан под надзор местной полиции, что ограничило его деятельность в преподавании и печати. Несмотря на это, он продолжал активно заниматься научной работой, написав несколько книг и принимая участие в различных социальных и культурных инициативах. В 1859 году он был приглашён на кафедру русской истории в Петербургском университете.
В 1875 году Костомаров перенёс сыпной тиф, что серьёзно подорвало его здоровье, а через несколько месяцев умер его мать. Костомаров скончался 7 (19) апреля 1885 года после долгой и мучительной болезни и был похоронен на Литераторских мостках Волковского кладбища в Санкт-Петербурге.