Wojska rosyjskie przeszły do natarcia w nocy 18 listopada i szturmem zajęły Kars oraz podeszły do Erzurum. Nowy szturm Plewny 11 i 12 września zakończył się niepowodzeniem i wojska rosyjskie przeszły do blokady Plewny, która skończyła się 10 grudnia kapitulacją twierdzy. Po tym rosyjska armia w sile 314 tys. żołnierzy przeciw 183 tys. Turków przeszła do natarcia. Również armia serbska wznowiła działania bojowe przeciwko Turkom. Oddział zachodni gen. Hurko (71 tys.) w trudnych warunkach przeszedł przez grzbiety Bałkanów i 4 stycznia 1878 zajął Sofię. W tym dniu Oddział Południowy gen. F. Radeckiego rozpoczął natarcie i w bitwie pod Szejnową 8–9 stycznia okrążył i wziął do niewoli 30 tys. żołnierzy tureckich armii Wessela Paszy. 15–17 stycznia 1878 w bitwie pod Filipopolem (Płowdiw) została rozbita armia Sulejmana Paszy, a 29 stycznia wojska rosyjskie zajęły Adrianopol. Wprowadzenie na Morze Marmara eskadry okrętów przez Wielką Brytanię zmusiło Rosję do powstrzymania się od zajęcia Konstantynopola.
Skutki wojny thumb|Zmiany terytorialne granic Rosji, Serbii, Rumunii i Czarnogóry, a także granice Wielkiej Bułgarii według pokoju w San Stefano Rozpoczęto rozmowy pokojowe. Traktat pokojowy pomiędzy państwami podpisano 3 marca 1878 w San Stefano.