Saudi-led coalition targeted Houthi military sites - Saudi media

A photo taken from the Yemeni coast southwest of the city of Taiz, shows a vessel anchored at Bab Al Mandab Strait, in the Red Sea, on July 24, 2026 (AFP photo)
A photo taken from the Yemeni coast southwest of the city of Taiz, shows a vessel anchored at Bab Al Mandab Strait, in the Red Sea, on July 24, 2026 (AFP photo)

AMMAN — Saudi-led coalition forces in Yemen carried out airstrikes Friday against Houthi military sites in the western port city of Hodeidah, in response to attacks on Saudi-linked shipping in the Red Sea, the coalition said.

“We carried out a proportionate military response operation against legitimate military targets belonging to the terrorist Houthi militia in Hodeidah governorate,” coalition spokesman Maj. Gen. Turki Al Malki said on X, adding that the operation had ended.

The strikes came after the Iran-backed Houthis threatened to target Saudi vessels that did not comply with their maritime blockade and claimed attacks this week on two Saudi ships. Saudi Arabia confirmed one of the attacks.

A Yemeni security source told AFP that a naval base in Hodeidah and a military camp on Kamaran Island were among the targets.

Yemen’s Houthi-run foreign ministry said on Friday that the strikes marked the start of a phase of “escalation for escalation.”

“Residents reported hearing explosions, including near the port.

The Houthi-run Al Masirah television said two people were injured — a worker in Hodeidah city and a woman on Kamaran Island.

In a statement, Al-Malki said on Saturday that Hodeidah port had not been targeted and that all Yemeni ‌ports, including Hodeidah, Ras ‌Issa and Salif, remained open to maritime navigation ‌and ⁠were receiving commercial ⁠ships.

He also said that no airport had been targeted in order to keep airports open to air traffic, but accused the Houthis of refusing to allow flight operations at Sanaa International Airport.

The Saudi coalition said it would continue taking necessary measures to protect its ships and Saudi Arabia’s interests, and would respond “uncompromisingly” if the Houthis continued what it described as hostile actions.

The escalation marked the first reported exchange of fire between coalition forces and the Houthis in years, threatening a fragile truce that has largely held since 2022 despite formally expiring.

On Friday, Saudi state media cited a transport authority official as saying the Saudi-owned vessel NCC MASA had been targeted while sailing in the Red Sea, causing minor damage to its hull. The ship resumed its journey, SPA reported.

The latest flare-up comes as disruption to shipping through the Strait of Hormuz has increased the importance of the Red Sea route for Saudi Arabia, the world’s top oil exporter.

In April and May, all of Saudi Arabia’s seaborne crude exports departed from its Red Sea port of Yanbu, according to Kpler data. The port accounted for 92 percent of seaborne crude exports in June and 78 percent so far in July.

This article was first published in the Riyadh-based Arab News

.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'); }); }); });