91³Ô¹ÏÍø

Watch CBS News

Harper, Turner have monster nights, Suárez strikes out 10 as Philadelphia Phillies beat Mariners

Trea Turner had four hits, including his first home run at home this season, Bryce Harper homered twice and the Philadelphia Phillies defeated the Seattle Mariners 12-7 on Monday night.

Turner hit a three-run homer off Seattle starter Logan Gilbert (3-5) as part of a six-run second inning. Turner also had two singles and a double for his fifth straight multihit game. He finished with five RBIs.

Harper hit homers in back-to-back innings. His solo shot in the sixth marked the 11th time he's had 20 home runs in a season. An inning later, his two-run homer off the second deck made it his 30th multihomer game.

J.T. Realmuto had three hits, including a home run, and the Phillies also got RBI hits from Kyle Schwarber, Max Kepler and Bryson Stott. All told, the Phillies got 21 hits.

Ranger Suárez (9-6) matched a career high with 10 strikeouts to earn the win. He pitched 6 2/3 innings, allowing two runs on four hits.

Mitch Garver and Cole Young provided most of the offense for Seattle. They each homered while Garver added an RBI single. Young finished with four RBIs.

Gilbert lasted just two innings and gave up six runs and nine hits. The Mariners have lost three straight and five of six.

One home run away from  for home runs in a season by a catcher, Seattle's Cal Raleigh went 0-for-5, striking out three times.

Key moment

After the Mariners had a four-run seventh to get within three, the Phillies answered with four runs, capped by Harper's second home run.

Key stat

Turner's homer was the 1,500th hit of his career.

Up next

Mariners RHP Bryce Miller (2-5, 5.73 ERA) starts Tuesday against Phillies LHP Cristopher Sanchez (11-4, 2.45).

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