91³Ô¹ÏÍø

Watch CBS News

Curtis Mead homers, Andrew Alvarez shines in relief as Nationals blank Giants 3-0 to avoid sweep

Curtis Mead Andrew Alvarez worked 4 1/3 sharp innings in relief and the Washington Nationals beat the San Francisco Giants 3-0 on Sunday to avoid a three-game sweep.

Alvarez (1-0), recalled earlier Sunday from Triple-A Rochester, allowed three hits, struck out five and walked none.

Keibert Ruiz had a run-scoring double and a single for Washington, which earned its first shutout since Sept. 1, 2025 against Miami. San Francisco was blanked for the fourth time this season.

Miles Mikolas replaced opener PJ Poulin with two on and two outs in the first inning and worked four innings. He allowed four hits, struck out four, walked one and lowered his ERA from 11.49 to 9.15.

Rafael Devers and Drew Gilbert had two hits each for the Giants, who were seeking their first four-game win streak of the season under first-year manager Tony Vitello.

The Giants went 0 for 10 with runners in scoring position and left 10 men on base.

Robbie Ray (2-3) allowed three runs on seven hits over six innings. He struck out seven and walked one.

Washington scored three runs in the fifth. Nasim Nuñez beat out a drag bunt and stole second. Ruiz hit a line drive to left-center, and left fielder Heliot Ramos couldn't come up with the diving catch as Nuñez scored. Mead then lined a first-pitch changeup to left for a two-run homer.

San Francisco's Luis Arraez (0 for 4) went hitless for the first time in 14 career games at Nationals Park.

Up next

Giants: RHP Landon Roupp (3-1, 2.38 ERA) opposes Dodgers RHP Yoshinobu Yamamoto (2-1, 2.38) in the series opener at San Francisco on Tuesday.

Nationals: RHP Jake Irvin (1-2, 6.16) starts against Braves RHP Reynaldo Lopez (1-0, 2.18) in the first of a four-game series on Monday.

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=296763317a51cab90faa73f1bb146d5c'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });