91³Ô¹ÏÍø

Watch CBS News

Virginia offense keeps rolling, beats Stanford 48-20

Wide receiver Trell Harris caught a trio of first-quarter touchdown passes as Virginia raced away from visiting Stanford, 48-20, on Saturday night at Scott Stadium.

"You dream and you pray for a half like that," Harris said.

Chandler Morris had his most productive game quarterbacking in a Virginia uniform, throwing for 380 yards and four touchdowns and running for another score.

"We felt like this week we were going to get some opportunities to put the ball in the air," UVA coach Tony Elliott said. "It was good for Chandler to have a game like that."

Morris threw for 380 yards and four touchdowns.

J'Mari Taylor ran for 85 yards on 15 carries for the Cavaliers, who averaged 5.7 yards per carry.

A week after setting a program record with 700 total offensive yards against FCS William & Mary, the Virginia offense hummed at a similarly high rate against Stanford, blistering the Cardinal for 590 yards.

"We knew they had a dynamic offense coming in," Stanford coach Frank Reich said. "They put up a zillion yards in the last few games. A lot of points. Running the football at a high level. Hadn't given up a sack. Quarterback is dynamic.

"Wasn't our best outing defensively. I know we're better than that. There were plays there to be made defensively that I think we would normally make."

The Cavaliers' defense bottled up Stanford star running back Micah Ford. A week after Ford went for a career-high 157 yards in a win over Boston College, he found no room to run against Virginia, finishing with 44 yards on 13 carries. He did score a 3-yard touchdown in the second quarter.

The Cardinal did make yards through big passing plays. Bryce Farrell had a 60-yard reception in the first half and a 68-yard touchdown catch in the second.

Virginia got star linebacker Kam Robinson back and Robinson did not disappoint, leading the Cavaliers with seven tackles. He missed the first three games of the season with a fractured collarbone.

"It was just good to see (him) running around. I think everybody loves to watch him," Elliott said. "Now he knows that he's ready to roll. Should be a good jolt for us down the stretch.

Stanford made its first trip to the East Coast this season, and the Cardinal should be glad it won't be back until visiting Miami at the end of the month. Its defense allowed Virginia to take over right from the opening drive.

Virginia demonstrated that last week's offensive outburst wasn't solely a result of the opponent. Piling up yards against Stanford proves the Cavalier offense has the firepower to be an impact unit this season.

After back-to-back ACC contests, Stanford hosts San Jose State on Saturday in a non-conference game.

Virginia hosts Florida State in the Cavaliers' most anticipated early-season matchup.

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