Родился в семье крестьянина. Русский. Окончил два курса Института инженеров промышленного строительства. С 1937 года в рабоче-крестьянском Красном флоте. Окончил Высшее военно-морское училище имени М. В. Фрунзе в 1939 году. С сентября 1939 года служил на Тихоокеанском флоте, был штурманом экипажа подводной лодки, затем помощник командира и командир подводной лодки. В 1942 году окончил Высшие специальные классы командного состава ВМФ.
В боевых действиях Великой Отечественной войны участвовал с июня по сентябрь 1944 года, когда был переведён на Черноморский флот и назначен командиром подводной лодки.
После войны продолжал службу на Черноморском флоте, был начальником штаба дивизиона подводных лодок, командиром дивизиона подводных лодок. С 1950 года — заместитель начальника, позднее начальник управления штаба Черноморского флота. С 1953 года — командир части, затем — начальник штаба соединения подводных лодок Черноморского флота. В 1956—1957 годах — командующий подводными силами Черноморского флота.
В 1959 году окончил Военную академию Генерального штаба Вооружённых сил СССР. С 1959 года — командующий подводными силами Балтийского флота. С 1960 года — начальник штаба Черноморского флота. С 1964 года — начальник управления — заместитель начальника Главного Штаба ВМФ СССР. С 1969 года — командующий Тихоокеанским флотом. С сентября 1974 года — первый заместитель Главнокомандующего Военно-Морским флотом СССР. 5 ноября 1973 года Н. И. Смирнову присвоено воинское звание адмирал флота.
С 1988 года — военный инспектор-советник Группы генеральных инспекторов Министерства обороны СССР. Жил в Москве. Похоронен на Новодевичьем кладбище.
Член ВКП(б) с 1942 года. Кандидат в члены ЦК КПСС в 1971—1976 годах. Депутат Верховного Совета СССР 8-11-го созывов (1970—1989).