MEXICO CITY (AP)The San Francisco 49ers took the extra step of training at altitude in Colorado for a few days before coming to Mexico City, hoping that the move would allow them to thrive at Estadio Azteca, which sits at about 7,200 feet above sea level.

The Arizona Cardinals didn’t think it was necessary.

In the marketplace of football ideas, it’s safe to say the 49ers won that disagreement by a landslide.

Jimmy Garoppolo threw for four touchdowns, including two each to Brandon Aiyuk and George Kittle, and the 49ers grew strong as the game progressed, beating the Cardinals 38-10 on Monday night.

Niners defensive end Nick Bosa said there was no question that the team’s training in Colorado was time well spent.

”(Owner) John York got the game ball,” Bosa said. ”For him to put us in that situation and spend the money you have to spend to do something like that is why the Niners are a winning franchise.”

Bosa said the Colorado experience didn’t solve the altitude problems completely, but it allowed the team to understand what to expect. Estadio Azteca is about 2,000 feet higher than any other stadium in the NFL.

”It was brutal,” Bosa added. ”Three full speed reps and you’re hurting. It does get better throughout the game and I think we did a good job sticking with it.”

Cardinals coach Kliff Kingsbury didn’t believe that the altitude affected his team.

”I didn’t,” Kingsbury said. ”Everybody was tired. I think both teams you could see were getting winded at times but it wasn’t anything that I felt like was game changing.”

There wasn’t any indication that the Cardinals decided to stay in Tempe, Arizona, this week for their practices because of money issues. Instead, Kingsbury thought the team’s strength and conditioning staff had developed a good plan for his players, and a few extra days at home would pay off.

The game was tight in the first half with the 49ers pushing to a 17-10 lead by the break after Robbie Gould’s 39-yard field goal. But the game changed on the first drive of the second half.

The Niners put together a punishing eight-play drive that included seven run plays, capped by Deebo Samuel’s 39-yard end-around that resulted in a touchdown. The speedy Samuel weaved in and out of the Cardinals defense, evading tacklers with ease.

Arizona’s offense couldn’t respond, getting shut out in the second half.

”I didn’t think that the Niners confused me one time tonight,” Colt McCoy said. ”I knew what they were doing. They showed me a lot of different looks. And so that’s a bummer. Feel pretty good about it, but we just didn’t make enough plays.”

McCoy was forced into action for a second straight week because starting quarterback Kyler Murray is still nursing a sore hamstring. The 36-year-old finished 24 of 34 passing for 218 yards and one interception.

But he was far from the only problem. The Cardinals defense has been solid for the most part this season, but couldn’t stop the Niners, particularly in the second half. Kittle’s second touchdown came after a short catch, then the big tight end rumbled down the field for a 32-yard score, blowing past an overmatched Arizona defense.

Whether it was tired players or simply poor play, the Cardinals obviously did not have a great night in Mexico City. Now they’re sitting with a 4-7 record at the bottom of the NFC West. Making the playoffs is a longshot.

”We’ve got to flush it,” Kingsbury said. ”We’ve got a short week with the Chargers coming in. So that’s what we talked about. We know we’ve got to play a lot better. Gotta improve in a short time. A lot of mental preparation going into Sunday’s game before a bye. So we’ve got to find a way to get it corrected.”

AP NFL: https://apnews.com/hub/nfl and https://twitter.com/AP-NFL