ADVERTISEMENT

Car bomb kills Russian general in Moscow

Published Dec 22, 2025 08:20 pm
This image taken from video provided by Investigative Committee of Moscow on Monday, Dec. 22, 2025, shows the scene where Lt. Gen. Fanil Sarvarov, head of the Operational Training Directorate of the Russian Armed Forces General Staff, was killed by an explosive device placed under his car in Moscow. (Investigative Committee of Moscow via AP)
This image taken from video provided by Investigative Committee of Moscow on Monday, Dec. 22, 2025, shows the scene where Lt. Gen. Fanil Sarvarov, head of the Operational Training Directorate of the Russian Armed Forces General Staff, was killed by an explosive device placed under his car in Moscow. (Investigative Committee of Moscow via AP)

MOSCOW — A car bomb killed a Russian general on Monday, the third such killing of a senior military officerin a year. Investigators said Ukraine may be behind the attack.

Lt. Gen. Fanil Sarvarov, head of the Operational Training Directorate of the Russian Armed Forces' General Staff, died from his injuries, said Svetlana Petrenko, the spokesperson for Russia’s Investigative Committee, the nation's top criminal investigation agency.

“Investigators are pursuing numerous lines of inquiry regarding the murder. One of these is that the crime was orchestrated by Ukrainian intelligence services,” Petrenko said.

Since Moscow sent troops into Ukraine nearly four years ago, Russian authorities have blamed Ukraine for several assassinations of military officers and public figures in Russia. Ukraine has claimed responsibility for some of them. It has not yet commented on Monday's death.

Kremlin spokesman Dmitry Peskov said that President Vladimir Putin had been immediately informed about Sarvarov's killing.

The Defense Ministry said that Sarvarov had previously fought in Chechnya and taken part in Moscow's military campaign in Syria.

Just over a year ago, Lt. Gen. Igor Kirillov, the chief of the military’s nuclear, biological and chemical protection forces, was killed by a bomb hidden on an electric scooter outside his apartment building. Kirillov's assistant also died. Ukraine’s security service claimed responsibility for the attack.

An Uzbek man was quickly arrested and charged with killing Kirillov on behalf of the Ukrainian security service.

Putin described Kirillov’s killing as a “major blunder” by Russia’s security agencies, noting they should learn from it and improve their efficiency.

In April, another senior Russian military officer, Lt. Gen. Yaroslav Moskalik, a deputy head of the main operational department in the General Staff, was killed by an explosive device placed in his car parked near his apartment building just outside Moscow. A suspected perpetrator was quickly arrested.

Days after Moskalik's killing, Ukraine's President Volodymyr Zelenskyy said he received a report from the head of Ukraine’s foreign intelligence agency on the “liquidation” of top Russian military figures, adding that “justice inevitably comes" although he didn't mention Moskalik's name.

Related Tags

World news
ADVERTISEMENT
.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1561_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1562_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1563_widget.title }}

{{ articles_filter_1564_widget.title }}

.mb-article-details { position: relative; } .mb-article-details .article-body-preview, .mb-article-details .article-body-summary{ font-size: 17px; line-height: 30px; font-family: "Libre Caslon Text", serif; color: #000; } .mb-article-details .article-body-preview iframe , .mb-article-details .article-body-summary iframe{ width: 100%; margin: auto; } .read-more-background { background: linear-gradient(180deg, color(display-p3 1.000 1.000 1.000 / 0) 13.75%, color(display-p3 1.000 1.000 1.000 / 0.8) 30.79%, color(display-p3 1.000 1.000 1.000) 72.5%); position: absolute; height: 200px; width: 100%; bottom: 0; display: flex; justify-content: center; align-items: center; padding: 0; } .read-more-background a{ color: #000; } .read-more-btn { padding: 17px 45px; font-family: Inter; font-weight: 700; font-size: 18px; line-height: 16px; text-align: center; vertical-align: middle; border: 1px solid black; background-color: white; } .hidden { display: none; }
function initializeAllSwipers() { // Get all hidden inputs with cms_article_id document.querySelectorAll('[id^="cms_article_id_"]').forEach(function (input) { const cmsArticleId = input.value; const articleSelector = '#article-' + cmsArticleId + ' .body_images'; const swiperElement = document.querySelector(articleSelector); if (swiperElement && !swiperElement.classList.contains('swiper-initialized')) { new Swiper(articleSelector, { loop: true, pagination: false, navigation: { nextEl: '#article-' + cmsArticleId + ' .swiper-button-next', prevEl: '#article-' + cmsArticleId + ' .swiper-button-prev', }, }); } }); } setTimeout(initializeAllSwipers, 3000); const intersectionObserver = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { const newUrl = entry.target.getAttribute("data-url"); if (newUrl) { history.pushState(null, null, newUrl); let article = entry.target; // Extract metadata const author = article.querySelector('.author-section').textContent.replace('By', '').trim(); const section = article.querySelector('.section-info ').textContent.replace(' ', ' '); const title = article.querySelector('.article-title h1').textContent; // Parse URL for Chartbeat path format const parsedUrl = new URL(newUrl, window.location.origin); const cleanUrl = parsedUrl.host + parsedUrl.pathname; // Update Chartbeat configuration if (typeof window._sf_async_config !== 'undefined') { window._sf_async_config.path = cleanUrl; window._sf_async_config.sections = section; window._sf_async_config.authors = author; } // Track virtual page view with Chartbeat if (typeof pSUPERFLY !== 'undefined' && typeof pSUPERFLY.virtualPage === 'function') { try { pSUPERFLY.virtualPage({ path: cleanUrl, title: title, sections: section, authors: author }); } catch (error) { console.error('ping error', error); } } // Optional: Update document title if (title && title !== document.title) { document.title = title; } } } }); }, { threshold: 0.1 } ); function showArticleBody(button) { const article = button.closest("article"); const summary = article.querySelector(".article-body-summary"); const body = article.querySelector(".article-body-preview"); const readMoreSection = article.querySelector(".read-more-background"); // Hide summary and read-more section summary.style.display = "none"; readMoreSection.style.display = "none"; // Show the full article body body.classList.remove("hidden"); } document.addEventListener("DOMContentLoaded", () => { let loadCount = 0; // Track how many times articles are loaded const offset = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // Offset values const currentUrl = window.location.pathname.substring(1); let isLoading = false; // Prevent multiple calls if (!currentUrl) { console.log("Current URL is invalid."); return; } const sentinel = document.getElementById("load-more-sentinel"); if (!sentinel) { console.log("Sentinel element not found."); return; } function isSentinelVisible() { const rect = sentinel.getBoundingClientRect(); return ( rect.top < window.innerHeight && rect.bottom >= 0 ); } function onScroll() { if (isLoading) return; if (isSentinelVisible()) { if (loadCount >= offset.length) { console.log("Maximum load attempts reached."); window.removeEventListener("scroll", onScroll); return; } isLoading = true; const currentOffset = offset[loadCount]; window.loadMoreItems().then(() => { let article = document.querySelector('#widget_1690 > div:nth-last-of-type(2) article'); intersectionObserver.observe(article) loadCount++; }).catch(error => { console.error("Error loading more items:", error); }).finally(() => { isLoading = false; }); } } window.addEventListener("scroll", onScroll); });

Sign up by email to receive news.