91³Ô¹ÏÍø

Watch CBS News

Justin Crawford delivers first career walk-off hit to cap Phillies' comeback win over Nationals

Rookie Justin Crawford had an RBI single in the 10th inning after the Philadelphia Phillies rallied from a four-run deficit for a 6-5 victory over the Washington Nationals on Wednesday.

The Nationals led 5-1 in the seventh. J.T. Realmuto and Bryce Harper hit solo home runs to get the Phillies within 5-3. Edmundo Sosa hit a two-run single with the bases loaded and two outs in the ninth to tie the game.

With runners on the corners in the bottom of the 10th, Crawford singled to right off Cole Henry (0-1). It was the third hit for Crawford, a first-round amateur draft pick in 2022 who made his major league debut on opening day.

Sosa ended the top of the 10th with a leaping catch of a CJ Abrams line drive, doubling the automatic runner off second base for winning pitcher Jhoan Duran (1-1).

Washington starter Cade Cavalli went six innings, allowing one run, five hits and two walks and striking out three.

Abrams hit a three-run home run in the seventh inning. Daylen Lile, Brady House and Joey Wiemer each had two hits. Wiemer, who entered leading the majors with a .615 average, scored twice.

Cristopher Sánchez pitched 5 1/3 innings for the Phillies, allowing one run, four hits and four walks and striking out seven.

The Phillies took a lead in the first inning when Trea Turner scored on Kyle Schwarber's double.

The Nationals scored in the second on an infield single and two walks. With the bases loaded, Sánchez struck out Drew Millas on a pitch in the dirt, and Realmuto threw to first base trying to pick off Jacob Young, allowing Wiemer to score. Millas hit an RBI single in the sixth.

The homers were the first of the season for Realmuto and Harper.

Both teams are off Thursday. The Nationals prepare for their home opener against the World Series champion Dodgers on Friday. Their starting pitcher is to be announced.

The Phillies begin a road trip in Colorado. Aaron Nola (0-0, 5.40 ERA) will take the mound against former teammate Michael Lorenzen (0-0, 6.23) for the Rockies.

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=50747257b890e014813016b79ece0fb2'; 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(); } }); }); }); });