В 1876 году в Болгарии вспыхнуло восстание против турок, которое турецкие войска подавили с невероятной жестокостью. Это вызвало возмущение в европейских странах и особенно в России, считавшей себя покровительницей христиан Оттоманской империи. После того как Турция отклонила Лондонский протокол, подписанный 31 марта 1877 года Великобританией, Россией, Австро-Венгрией, Францией, Германией и Италией и предусматривающий демобилизацию турецкой армии и начало реформ в балканских провинциях Оттоманской империи, новая русско-турецкая война стала неизбежной. 24 апреля император Александр II подписал манифест о войне с Турцией. В тот же день 275-тысячная русская армия с 1250 орудиями перешла пограничный Прут и вошла в Румынию, ставшую союзницей России. 27 июня главные силы переправились через Дунай.
На европейском театре турки первоначально могли противопоставить неприятелю только 135-тысячную армию при 450 орудиях. Имелось также несколько десятков тысяч иррегулярной кавалерии – башибузуков, однако они годились только для борьбы с болгарскими партизанами и репрессий против мирного населения, а не для сражений с русской регулярной армией. На Кавказе 70-тысячной русской армии противостояли примерно равные по численности турецкие войска.
Русскими войсками на Балканах командовал великий князь Николай Николаевич, а турецким – Абдул-Керим Надир-паша. План русского командования заключался в быстром движении к Адрианополю, чтобы заставить турок прекратить сопротивление. Однако не были учтены как трудности движения по горной местности, так и возможные контрмеры. 7 июля отряд генерала Гурко занял Тырново и двинулся в обход Шипкинского перевала. Опасаясь окружения, 19 июля турки оставили Шипку без боя. 15 июля русские войска взяли Никополь. Однако большая турецкая армия под командованием Османа-паши, ранее дислоцировавшаяся в Видине, вошла в Плевну, угрожая правому флангу и коммуникациям русской армии. 20 июля не увенчалась успехом попытка отряда генерала Шильдер-Шульднера выбить турок из Плевны. Без овладения этой крепостью русские не могли продолжать наступление за Балканский хребет.
31 июля отряд генерала Криднера атаковал войска Осман-паши, но был разбит. Тем временем другая турецкая армия, под командованием Сулейман-паши, переброшенная из Черногории, разгромила отряды болгарских ополченцев и 21 августа начала штурм Шипки. Четыре дня продолжались ожесточенные бои, когда дело доходило до штыковых боев и рукопашной. К оборонявшемуся на перевале русскому отряду подошло подкрепление, и турки вынуждены были отступить.
11 сентября русские войска вновь штурмовали Плевну, но, потеряв 13 тысяч человек, откатились в исходное положение. Сулейман-паша повторил атаку Шипки, пытаясь отвлечь русские войска от Плевны, но был отбит.
27 сентября главнокомандующим армией был назначен генерал Тотлебен, который приступил к планомерной осаде Плевны. Армия Сулейман-паши безуспешно пыталась прорваться через Балканы и деблокировать Плевну в ноябре и начале декабря. 10 декабря Осман-паша предпринял последнюю атаку, чтобы уйти из осажденной крепости. Турки прошли две линии русских окопов, но на третьей были остановлены и сдались.
После взятия Плевны русские войска, несмотря на суровую зиму, сразу же двинулись через Балканские горы. 25 декабря отряд Гурко прошел перевал Чурьяк и 4 января 1878 года вступил в Софию, а в начале января главные силы преодолели Балканский хребет у Шипки. 10 января дивизии М. Д. Скобелева и князя Н. И. Святополк-Мирского нанесли поражение туркам у Шейново и окружили их отряд, прежде осаждавший Шипку. В плен попало 22 тысячи турецких солдат и офицеров.
Армия Сулейман-паши отступила к Филиппополю (Пловдиву), так как дорога на Константинополь была уже перерезана русскими войсками. Здесь в сражении 15–17 января 1878 года турки были разбиты отрядом генерала Гурко и потеряли более 20 тысяч человек и 180 орудий. Остатки войск Сулейман-паши бежали к побережью Эгейского моря и оттуда переправились к Стамбулу.
20 января Скобелев без боя занял Адрианополь. Турецкое командование уже не располагало на Балканском театре сколько-нибудь значительными силами.
30 января русские войска вышли на линию Силиври – Чаталджи – Карабурун, подойдя вплотную к последним оборонительным позициям перед Стамбулом.
31 января 1878 года в Адрианополе подписали перемирие.
На Кавказе номинальным командующим считался великий князь Михаил Николаевич, но фактически руководил операциями его начальник штаба генерал Михаил Лорис-Меликов. 15 октября русские войска разгромили армию Ахмеда Мухтар-паши у Аладжи. После этого сильнейшая турецкая крепость Карс осталась почти без гарнизона и 18 ноября сдалась.