Putin meets Kim, praises North Korean troops in Russia

Russian President Vladimir Putin sees North Korean leader Kim Jong Un off following their talks after attending a military parade marking the 80th anniversary of victory over Japan and the end of World War II, in Beijing on September 3, 2025 (AFP photo)
Russian President Vladimir Putin sees North Korean leader Kim Jong Un off following their talks after attending a military parade marking the 80th anniversary of victory over Japan and the end of World War II, in Beijing on September 3, 2025 (AFP photo)

BEIJING — Russian President Vladimir Putin on Wednesday thanked North Korea's Kim Jong Un for helping Russia oust Ukrainian soldiers from the Kursk region, saying they fought "heroically".

In a meeting with Kim in Beijing, Putin also praised their countries' "trust and friendship" and said that sending the troops was the North Korean leader's idea.

North Korea has become one of Russia's main allies since Moscow invaded Ukraine three-and-a-half years ago, sending thousands of soldiers and container loads of weapons to help the Kremlin push Ukrainian forces out of western Russia, following Kyiv's shock incursion last year.

"On your initiative, as is well known, your special forces took part in the liberation of the Kursk region," Putin said at the start of a meeting with his North Korean counterpart, filmed by AFP.

"This was in full accordance with our new agreement. I would like to note that your soldiers fought courageously and heroically," he added.

"We will never forget the sacrifices made by your armed forces and the families of your servicemen."

Russia and North Korea last year agreed a comprehensive strategic partnership agreement that obligates each side to provide "military and other assistance" should either of them be attacked.

The meeting in Beijing lasted around two-and-a-half hours, Russian state news agency TASS reported, with Putin walking Kim to his car after the talks.

In a video posted by the Kremlin, the pair are seen shaking hands and hugging, before Putin invites Kim to visit Russia.

"We are waiting for you," the Russian leader said.

Kim, who visited Russia's Far East in 2023, rarely leaves North Korea and travelled to Beijing on an armoured train.

The two leaders are in the Chinese capital for a massive parade marking the 80th anniversary of Japan's World War II surrender.

US President Donald Trump earlier accused Putin, Kim and Chinese President Xi Jinping of gathering in Beijing to "conspire" against the United States , remarks the Kremlin said it hoped were "ironic".

.col-lg-12.second .opinion-widget{border-top:1px solid #D0D0D0;} #widget_1623 .opinions-title {font-size:32px;} #widget_1623 .opinions-title a{font-size:32px;} .first-author{ background-color:#ecedef; } .first-opinion-author-name{ background-color:white; width:max-content; padding:5px; }
.epaper-separator{ height: 1px; width: 100%; background-color: #D0D0D0; margin: 15px 0; }

Today’s Paper

.related-articles .article-widget-sm .article-title{font-size:16px;-webkit-line-clamp:3;} .related-articles .layout-ratio{padding-bottom:55%;}
.alert-success { color :#A3656F ; } .alert-danger { color : red ; } .footer { font-family:Myriad Pro,Arial; } .newspaper-footer{ visibility:hidden; } .socialFixOuter { position: fixed; top: 50%; margin-top: 40px; right: 0; transition: .2s; z-index: 20; height: 217px; width: 40px; } .socialFix { height: 30px; width: 30px; display: block; position: relative; cursor: pointer; background-size: 18px 18px; transition: .2s; background-position: center; background-repeat: no-repeat; border-radius: 2px; margin-top: 1px; } .socialFix:hover { width: 40px; margin-left: -10px; } .app-badge-img { height: 36px; width: auto; } @media (max-width: 768px) { .app-badge-img { height: 32px; } .app-badges { justify-content: center !important; } }
document.addEventListener("DOMContentLoaded", function () { const socialFix = document.querySelector(".socialFixOuter"); if (!socialFix) return; let firstInteraction = false; let hideTimeout = null; function checkMobileScreen() { if (window.innerWidth < 768) { socialFix.style.display = "none"; } else { socialFix.style.display = "block"; } } checkMobileScreen(); window.addEventListener("resize", checkMobileScreen); function handleFirstInteraction() { if (firstInteraction) return; if (window.innerWidth < 768) return; firstInteraction = true; socialFix.style.right = "-25px"; } socialFix.addEventListener("mouseenter", function () { if (window.innerWidth < 768) return; if (hideTimeout) clearTimeout(hideTimeout); socialFix.style.right = "0"; }); socialFix.addEventListener("mouseleave", function () { if (window.innerWidth < 768) return; if (hideTimeout) clearTimeout(hideTimeout); hideTimeout = setTimeout(() => { socialFix.style.right = "-25px"; }, 500); }); ["click", "touchstart"].forEach((evt) => { socialFix.addEventListener(evt, handleFirstInteraction); }); }); function validateEmail(email) { if (email.length > 255) return false; const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; if (!emailRegex.test(email)) return false; if (email.includes('..') || email.startsWith('.') || email.endsWith('.')) return false; return true; } function sanitizeInput(input) { input = input.replace(/<[^>]*>/g, ''); input = input.replace(/javascript:/gi, ''); input = input.replace(/on\w+\s*=/gi, ''); input = input.replace(/[<>"'&(){}[\]]/g, ''); return input.trim(); } document.addEventListener('DOMContentLoaded', function () { function showModal(message, type) { const messageContainer = document.getElementById("messageContainerFooter"); messageContainer.textContent = message; messageContainer.className = `alert alert-${type} mt-3`; messageContainer.classList.remove("d-none"); setTimeout(() => { messageContainer.classList.add("d-none"); }, 5000); } document.getElementById("emailFormFooter").addEventListener("submit", function(event) { event.preventDefault(); const emailInput = document.getElementById("emailFooter"); const email = sanitizeInput(emailInput.value.trim()); if (!validateEmail(email)) { showModal('Invalid email format', 'danger'); return; } const formData = new FormData(); formData.append('email', email); fetch('/subscribeNewsletter', { method: "POST", body: formData, headers: { "Accept": "application/json", "X-Requested-With": "XMLHttpRequest" } }) .then(response => { if (!response.ok) { showModal("Error submitting email. Try again.", 'danger'); } return response.json(); }) .then(data => { showModal(data.message, 'success'); }) .catch(error => { showModal("Error submitting email. Try again.", 'danger'); }); }); });