MEXICO CITY -- As the final minute ticked off the clock, San Francisco quarterback Jimmy Garoppolo turned toward the crowd at Estadio Azteca, lifted his hands over his head and started clapping.
It was clear that the Mexico City crowd loved the 49ers.
Jimmy G and the 49ers gave that love -- and some really good football -- right back.
Garoppolo threw four touchdown passes, including two each to Brandon Aiyuk and George Kittle, and the 49ers won their third straight game by blowing past the Arizona Cardinals 38-10 on Monday night in Mexico City.
"The whole atmosphere tonight, I haven't played in anything like it," Garoppolo said. "It was electric, the fans were nuts, they were cheering throughout the whole game. It seemed like a soccer game at some points, just the passion they brought. It was really cool. I'd love to do it again."
It was the fifth regular-season NFL game played in Mexico City and first since 2019. Technically a Cardinals home game, the festive, raucous announced crowd of 78,427 fans heavily favored the 49ers, roaring particularly loud when Kittle and Deebo Samuel each scored on 39-yard touchdowns.
"Man, I love San Francisco, but if we can't be there, I love to be here," 49ers coach Kyle Shanahan said. "This place is awesome. That was one of the coolest experiences I've been a part of."
San Francisco (6-4) has won five of its last seven and is tied with the Seahawks at the top of the NFC West. Garoppolo had another efficient performance, completing 20 of 29 passes for 228 yards.
It was a tight game through much of the first half, but the 49ers pulled away in the second half, jumping ahead 24-10 early in the third quarter on a nifty end-around play. Samuel took the pitch and sprinted 39 yards, weaving through the Cardinals defense on his way to the end zone.
"It was really one of those pick your poison type of nights," Garoppolo said. "They tried to take away the run, so we passed it, and then vice versa. It was a good night."
It capped a powerful eight-play San Francisco drive that included seven run plays. Aiyuk's second touchdown catch of the night -- this one from 14 yards out -- put the 49ers up 31-10 later in the third.
"I hope we made a good impression," 49ers defensive end Joey Bosa said.
The Cardinals (4-7) played their second straight game without Pro Bowl quarterback Kyler Murray, who has been battling a sore hamstring. Backup Colt McCoy had a 3-1 record in spot starts over the past two seasons -- including a win over the Rams last week -- but couldn't recreate the same magic in Mexico.
McCoy finished 24 of 34 passing for 218 yards and an interception. The 49ers hit him hard multiple times, connecting for three sacks.
"It's just a bummer we didn't find a way to win that game," McCoy said. "But San Francisco played hard. They're a good football team, and we just didn't make enough plays. But for the crowd, for the atmosphere, being able to play internationally in Mexico City, I thought it was fantastic."
The 49ers took a 17-10 into the halftime break after Robbie Gould connected on a 39-yard field goal with 43 seconds remaining the second quarter. It capped a back-and-forth first half that saw the teams gain almost identical amounts of yardage: The 49ers had a 186-185 advantage.
The Cardinals pushed ahead 3-0 midway through the first quarter on Matt Prater's 40-yard field goal as both teams dealt with a steady rain that started around kickoff and continued through much of the first half.
The 49ers responded early in the second when Garoppolo hit Aiyuk over the middle for a 7-yard touchdown, capping a nine-play, 82-yard drive. San Francisco intercepted McCoy on the ensuing drive after a pass bounced off James Conner's hand and was snatched out of the air by Jimmie Ward.
San Francisco capitalized three plays later when Garoppolo evaded pressure and lofted a pass to Kittle, who juked two Arizona defenders and then cruised into the end zone for a 39-yard touchdown and a 14-3 lead.
The cavernous Estadio Azteca -- which is home to two of Mexico's top soccer teams -- sits at an altitude of about 7,200 feet, which is much higher than both San Francisco and Phoenix. The 49ers opted to train at altitude this week in Colorado, while the Cardinals decided to stay at their home practice facility in Tempe, Arizona.
Arizona's defense looked gassed in the second half, missing several tackles as the game slowly got out of hand.
"That was a really good team," Cardinals coach Kliff Kingsbury said. "We knew we had to play as good as we've played all year. And I thought they played really physical in that second half and found a way to make plays."
BACK IN MEXICO
The teams met in Mexico City a little more than 17 years after they played in the first regular-season NFL game played in a country outside the U.S. The Cardinals beat the 49ers 31-14 on Oct. 3, 2005, in front of 103,467 fans. The stadium's capacity has been reduced since that time for NFL games.
There have been three other regular-season games played in Mexico before Monday -- all at Estadio Azteca. The Raiders beat the Texans 27-20 in 2016, the Patriots beat the Raiders 33-8 in 2017 and the Chiefs beat the Chargers 24-17 in 2019.
49ers: DE Arik Armstead (foot/ankle) was listed as inactive.
Cardinals: In addition to Murray, the Cardinals had three other starters listed as inactive, including CB Byron Murphy Jr. (back), OT D.J. Humphries (back) and TE Zach Ertz (knee). Ertz is out for the season. ... WR Rondale Moore (groin) left in the first quarter and didn't return.