Родился в крестьянской семье в деревне Касимово. Из крестьянской семьи. В начале 30-х годов семья переехала в Уфу, где отец стал работать в местной заготконторе. Отец будущего генерала был необоснованно арестован в 1938 году, освобожден в 1939 году, в годы Великой Отечественной войны был мобилизован в армию, попал в плен, после освобождения из плена длительное время находился на спецпроверке в фильтрационном лагере.
Призван на срочную службу в Красную Армию в 1940 году. Служил на Дальнем Востоке. Из войск поступил в Хабаровское пехотное училище, которое окончил в феврале 1942 года.
Направлен на фронт в марте 1942 года на должность командира стрелкового взвода в составе 50-й армии Западного фронта. Затем воевал на низовых командных и штабных должностях, окончил войну начальником оперативного отдела штаба стрелкового корпуса. В боях был трижды ранен. Воевал на Западном, Центральном, 1-м Белорусском и 2-м Белорусском фронтах. Член ВКП(б) с 1944 года.
После войны командовал батальоном. Окончил Военную академию имени М. В. Фрунзе в 1950 году. Служил на должностях начальника штаба стрелкового полка, командира стрелкового полка, начальника штаба дивизии. С 1957 по 1962 годы командовал мотострелковой дивизией. В 1964 году окончил Военную академию Генерального штаба, назначен первым заместителем начальника штаба военного округа. С 1967 года - командующий армией.
С 1969 года - командующий войсками Киевского военного округа. С 1975 года - заместитель Главнокомандующего Сухопутными войсками СССР по боевой подготовке. С 28 декабря 1978 по январь 1984 года - командующий войсками Забайкальского военного округа.
В 1984—1986 годах находился в Афганистане на должности главного военного советника в Вооружённых Силах Демократической Республики Афганистан, один из руководителей боевых действий советских и афганских войск в ходе афганской войны. С 1986 года - начальник Военной академии Генерального штаба. С 1989 года - военный инспектор-советник Группы генеральных инспекторов Министерства обороны СССР. С 1992 года - в отставке.
Жил в Москве. Похоронен на Кунцевском кладбище.
Депутат Верховного Совета СССР 8-10-го созывов (1970-1984). Кандидат в члены ЦК КПСС в 1971-1976 годах. Член ЦК КПСС в 1981-1990 годах.