91³Ô¹ÏÍø

Watch CBS News

Pitt rolls past Stanford behind Mason Heintschel's 3 TDs

Mason Heintschel threw for 304 yards and tied his season-high with three touchdown passes, leading Pittsburgh to a 35-20 win over Stanford on Saturday.

Pitt's first true freshman starting quarterback since Kenny Pickett in 2017, Heintschel completed 23 of 38 passes and had a rating of 143.3 while guiding the Panthers (7-2, 5-1 Atlantic Coast Conference) to their fifth consecutive victory.

Ja'Kyrian Turner ran for a season-high 127 yards while Kenny Johnson, Raphael Williams Jr. and Jake Overman each caught touchdown passes for Pitt in its first game at Stanford since 1922.

Shawn Lee Jr. scored on a 30-yard interception, one of four turnovers forced by the Panthers.

That was part of a dominant day by Pitt's defense, which had five sacks and limited Stanford to minus-4 yards rushing and twice forced turnovers on downs.

Ben Gulbranson completed 17 of 30 throws for 228 yards, one touchdown and three interceptions for Stanford (3-6, 2-4) before getting benched in the second half.

The Panthers never trailed, scoring their first touchdown four plays after dropping Stanford for a two-yard loss on 4th-and-1 from the Cardinal 37 on the game's opening drive.

Heintschel, the ACC's leading passer, had touchdown throws of 17, 5 and 14 yards. It's his third game this season with 300 yards or more and third with three touchdowns. Heintschel was intercepted twice.

Deuce Spann scored on a 4-yard run off a direct snap for the Panthers early in the second quarter.

Emmet Kenney had field goals from 39 and 45 yards for the Cardinal.

Pittsburgh: Heintschel has tremendous poise and pocket presence, making big plays with his arm and feet. The Panthers' defense matched the QB's day with consistent pressure and forcing turnovers.

Stanford: The offense as a whole looked flat. The running game was non-existent and the pass protection was weak. The Cardinal made a few plays but not enough against Heintschel.

Pittsburgh: Hosts No. 12 Notre Dame on Nov. 15.

Stanford: Plays at North Carolina on Saturday.

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