ORCHARD PARK, N.Y. — LeSean McCoy scored twice and safety Aaron Williams returned a botched field-goal snap 53 yards for a touchdown in leading the Buffalo Bills to a 33-18 win over the Arizona Cardinals on Sunday.

Quarterback Tyrod Taylor also scored on a 20-yard run at a time the Rex Ryan-coached Bills spent the past week taking the brunt of criticism after opening the season 0-2.

The win also came on the heels of Ryan firing offensive co-ordinator Greg Roman and replacing him with running backs coach Anthony Lynn.

McCoy scored on 24- and 5-yard runs, and finished with 110 yards rushing after combining for just 117 in his first two games. Taylor had 76 yards rushing, including a 49-yarder, the longest by a quarterback in team history.

And suddenly, the Bills' offence started resembling the one that led the NFL in yards rushing last season.

"This is what we do. This is what we are built for," guard Richie Incognito said. "This is the way we were assembled in the off-season and it's nice to see everything come to fruition."

And Ryan's defence started resembling the bully he envisioned when he was first hired in January 2015.

A week after allowing 493 yards in a 37-31 loss to the New York Jets , the Bills limited Arizona to 348 yards, forced six punts and closed the game by intercepting Carson Palmer on each of Arizona's final four possessions.

Stephon Gilmore had two interceptions.

Arizona (1-2) unraveled a week after a 40-7 win over Tampa Bay, and had a five-game road winning streak snapped going back to last season.

The Cardinals combined for just 2 yards net offence and no first downs on their first five possessions. Palmer finished 26 of 50 for 264 yards and was sacked five times.

"I'm disappointed in the way we played. I'm disappointed in myself," Palmer said.

David Johnson scored on 4- and 22-yard runs for Arizona.

The Bills took control in building a 30-7 lead on Williams' fumble return with 2:25 left in the third quarter.

With Chandler Catanzaro lining up to attempt a 32-yard field goal, Kameron Canaday's snap sailed high and through the hands of holder Drew Butler. Catanzaro missed in an attempt to fall on the ball, and the ball squirted loose.

Catanzaro also missed a last-minute field goal in the opener against New England because of a poor snap.

Coach Bruce Arians placed the blame on the bad snap solely on Canaday.

"Grow the hell up," Arians said. "It ain't got nothing to do with anything but between his ears."

Trailing 30-16 midway through the fourth quarter, the Cardinals had a golden opportunity slip through their fingers.

Safety Tyrann Mathieu batted down quarterback Tyrod Taylor's backward pitch intended for Robert Woods for a fumble. Mathieu failed twice attempting to scoop up the ball and instead kicked it out of bounds into the Cardinals sideline.

The Bills' defence then secured the victory on Arizona's next possession, when Gilmore intercepted Palmer's pass up the left sideline intended for John Brown. The turnover led to Buffalo putting the game away with Dan Carpenter hitting a 45-yard field goal.

DOUBLE DUTY

Catanzaro was forced to take over the punting duties after Butler hurt his left ankle on the final play of the first quarter. Backed up in his own end zone, Catanzaro's first punt travelled 47 yards.

He then shanked his next punt early in the third quarter. It travelled just 19 yards and bounced out of bounds at the Cardinals 47.

Arians called Butler's ankle as being "severely sprained."

Catanzaro did hit a 60-yard field goal , the longest in a Bills home game. The previous record was Bills kicker Steve Christie hitting a 59-yarder in 1993.

FINALLY, FITZGERALD

Larry Fitzgerald finally made a catch in Orchard Park.

The Cardinals receiver extended the NFL's longest active reception streak to 182 consecutive games with a 3-yard catch on a crossing pattern midway through the first quarter. Fitzgerald's streak began during his rookie season and after he failed to make a catch in a 38-14 loss at the Bills on Oct. 31, 2004. It stands as the only game of his career he's not had a reception. He finished with seven catches for 60 yards.

THEY SAID IT

"I don't care who plays quarterback. Steve Grogan can play quarterback. If Belichick's playing quarterback we're coming after him," Ryan said looking ahead to playing the Bill Belichick-coached Patriots next week, and the uncertainty they have at quarterback.

DEPLETED BILLS

Injuries continued to hamper the Bills, who were down three starters in receiver Sammy Watkins, left tackle Cordy Glenn and cornerback Ronald Darby.

Watkins has been bothered by a sore left foot he had surgically repaired in April. He then aggravated the injury when a teammate stepped on his foot during a walk-through last week.

___

AP NFL website: www.pro32.ap.org and AP NFL Twitter feed: http://twitter.com/AP_NFL