ADVERTISEMENT

Ramos, Ronaldo deliver as Portugal rallies past Croatia to barge into Round of 16

Published Jul 3, 2026 10:38 am

At A Glance

  • TORONTO (AP) — Goncalo Ramos headed in the stoppage-time winner as Portugal beat Croatia, 2-1, in a wild finish that also included a Croatian goal disallowed for offside just before the final whistle in a World Cup round of 32 match on Thursday night, July 2.
Portugal's Cristiano Ronaldo (7) celebrates after scoring their opening goal during the World Cup round of 32 soccer match between Portugal and Croatia in Toronto, Thursday, July 2, 2026. (AP Photo/Stephanie Scarbrough)
Portugal's Cristiano Ronaldo (7) celebrates after scoring their opening goal during the World Cup round of 32 soccer match between Portugal and Croatia in Toronto, Thursday, July 2, 2026. (AP Photo/Stephanie Scarbrough)
TORONTO (AP) — Goncalo Ramos headed in the stoppage-time winner as Portugal beat Croatia, 2-1, in a wild finish that also included a Croatian goal disallowed for offside just before the final whistle in a World Cup round of 32 match on Thursday night, July 2.
The game featured a matchup 40-somethings Cristiano Ronaldo of Portugal, in his sixth World Cup, and Croatia's Luka Modrić, making his fifth bid for a tournament title.
Ronaldo initially tied things up in the 68th minute on a penalty kick and give the megastar his first knockout stage goal at the World Cup before being subbed out in the 81st minute. But, it was Ramos who gave Portugal the victory and a berth in the round of 16.
Portugal moves on to face Spain on Monday.
“First half we dominated the game. In second half after the goal we get a little bit panic, but this is football,” Ronaldo said. “After the penalty, I think it was a little bit better for us. We created a few chances and I think at the end of the day we deserved to win the match.”
The game ended in controversy as Croatia thought it had tied things up 2-2 in the very last moments, but Mario Pasalic was called offside as VAR ruled no goal. Croatia fans threw bottles on the field and whistled in protest.
Croatia opened the scoring in the 53rd minute when Ivan Perisic scored off a cross from Josip Sanisic.
Ronaldo, booed loudly by Croatia fans every time he touched the ball, got his chance from the spot after Nikola Vlasic was called for a holding foul inside the box. Portugal’s megastar hitched his step and converted down the middle as the goalkeeper went to his right.
Modrić led Croatia to second- and third-place finishes in 2018 and 2022, and the match carried the weight of the two aging stars each trying to realize the dream of winning the World Cup. Modrić is 40, while Ronaldo is 41.
The men, who were teammates at Real Madrid, shared a few smiles and an embrace ahead of the coin toss before the match. The two met on the pitch after the match, and hugged and exchanged a few words.
“I played with Luca so many years,” Ronaldo said. "We’re nearly the same age. I think he’s a legend of football. He’s still a legend of football.”

Related Tags

Cristiano Ronaldo Portugal FIFA World Cup 2026 Croatia
ADVERTISEMENT
.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1561_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ static_articles_1562_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1563_widget.title }}

{{ articles_filter_1564_widget.title }}

.mb-article-details { position: relative; } .mb-article-details .article-body-preview, .mb-article-details .article-body-summary{ font-size: 17px; line-height: 30px; font-family: "Libre Caslon Text", serif; color: #000; } .mb-article-details .article-body-preview iframe , .mb-article-details .article-body-summary iframe{ width: 100%; margin: auto; } .read-more-background { background: linear-gradient(180deg, color(display-p3 1.000 1.000 1.000 / 0) 13.75%, color(display-p3 1.000 1.000 1.000 / 0.8) 30.79%, color(display-p3 1.000 1.000 1.000) 72.5%); position: absolute; height: 200px; width: 100%; bottom: 0; display: flex; justify-content: center; align-items: center; padding: 0; } .read-more-background a{ color: #000; } .read-more-btn { padding: 17px 45px; font-family: Inter; font-weight: 700; font-size: 18px; line-height: 16px; text-align: center; vertical-align: middle; border: 1px solid black; background-color: white; } .hidden { display: none; }
function initializeAllSwipers() { // Get all hidden inputs with cms_article_id document.querySelectorAll('[id^="cms_article_id_"]').forEach(function (input) { const cmsArticleId = input.value; const articleSelector = '#article-' + cmsArticleId + ' .body_images'; const swiperElement = document.querySelector(articleSelector); if (swiperElement && !swiperElement.classList.contains('swiper-initialized')) { new Swiper(articleSelector, { loop: true, pagination: false, navigation: { nextEl: '#article-' + cmsArticleId + ' .swiper-button-next', prevEl: '#article-' + cmsArticleId + ' .swiper-button-prev', }, }); } }); } setTimeout(initializeAllSwipers, 3000); const intersectionObserver = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { const newUrl = entry.target.getAttribute("data-url"); if (newUrl) { history.pushState(null, null, newUrl); let article = entry.target; // Extract metadata const author = article.querySelector('.author-section').textContent.replace('By', '').trim(); const section = article.querySelector('.section-info ').textContent.replace(' ', ' '); const title = article.querySelector('.article-title h1').textContent; // Parse URL for Chartbeat path format const parsedUrl = new URL(newUrl, window.location.origin); const cleanUrl = parsedUrl.host + parsedUrl.pathname; // Update Chartbeat configuration if (typeof window._sf_async_config !== 'undefined') { window._sf_async_config.path = cleanUrl; window._sf_async_config.sections = section; window._sf_async_config.authors = author; } // Track virtual page view with Chartbeat if (typeof pSUPERFLY !== 'undefined' && typeof pSUPERFLY.virtualPage === 'function') { try { pSUPERFLY.virtualPage({ path: cleanUrl, title: title, sections: section, authors: author }); } catch (error) { console.error('ping error', error); } } // Optional: Update document title if (title && title !== document.title) { document.title = title; } } } }); }, { threshold: 0.1 } ); function showArticleBody(button) { const article = button.closest("article"); const summary = article.querySelector(".article-body-summary"); const body = article.querySelector(".article-body-preview"); const readMoreSection = article.querySelector(".read-more-background"); // Hide summary and read-more section summary.style.display = "none"; readMoreSection.style.display = "none"; // Show the full article body body.classList.remove("hidden"); } document.addEventListener("DOMContentLoaded", () => { let loadCount = 0; // Track how many times articles are loaded const offset = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // Offset values const currentUrl = window.location.pathname.substring(1); let isLoading = false; // Prevent multiple calls if (!currentUrl) { console.log("Current URL is invalid."); return; } const sentinel = document.getElementById("load-more-sentinel"); if (!sentinel) { console.log("Sentinel element not found."); return; } function isSentinelVisible() { const rect = sentinel.getBoundingClientRect(); return ( rect.top < window.innerHeight && rect.bottom >= 0 ); } function onScroll() { if (isLoading) return; if (isSentinelVisible()) { if (loadCount >= offset.length) { console.log("Maximum load attempts reached."); window.removeEventListener("scroll", onScroll); return; } isLoading = true; const currentOffset = offset[loadCount]; window.loadMoreItems().then(() => { let article = document.querySelector('#widget_1690 > div:nth-last-of-type(2) article'); intersectionObserver.observe(article) loadCount++; }).catch(error => { console.error("Error loading more items:", error); }).finally(() => { isLoading = false; }); } } window.addEventListener("scroll", onScroll); });

Sign up by email to receive news.