EAST RUTHERFORD, N.J. (AP) -- There was one team that looked like a playoff contender Thursday night. It wasn't the Buffalo Bills.
Buffalo's pursuit of AFC East kingpin New England was stymied by the New York Jets, who controlled the line of scrimmage on both sides in a 34-21 win that never was close in the second half.
Matt Forte ran for two touchdowns four days after complaining the Jets didn't run the ball enough, and an overwhelming defense sacked Tyrod Taylor seven times.
"We played to what we do best," Forte said. "Our offensive line likes to come off the line straight ahead and hit guys in the mouth and wear guys out like that. I think we started to wear them out as the game went on, and you saw some runs pop here and there."
Buffalo (5-3) came in having scored 64 points in its last two wins, but self-destructed with turnovers and miscues. New York (4-5) snapped a three-game slide in which it held leads in each defeat.
"We've got a high ceiling," defensive tackle Leonard Williams said. "We showed we can get takeaways, we showed we can get sacks, we showed we can stop the run. This is our first game putting it all together in a complete game. I feel like now that we showed it and put in on film, we'll definitely challenge ourselves to keep progressing."
Forte scored on runs of 10 and 5 yards and had 14 carries for 77 yards. Augmenting that was Bilal Powell with a 51-yard burst and 74 yards on nine carries. Quarterback Josh McCown got in on the fun with a 10-yard scramble to open the scoring, and New York rushed for 194 yards overall.
Jordan Jenkins had two of the Jets' sacks as they never allowed Buffalo's offense to get on track.
Indeed, mistakes were the Bills' trademark.
"We came into their house and they just outplayed us," Taylor said. "They were really aggressive today and played to their strengths.
"We have to stop the negative plays. Tonight we had turnovers on offense and that's not our style of play."
Buffalo made a key error on New York's second touchdown drive. Cedric Thornton sacked McCown, but grabbed his face mask. The 15-yard penalty, which followed a 20-yard pass to Jermaine Kearse and a 22-yard run by Forte, led to Robby Anderson beating double coverage for a 25-yard TD reception.
Forte's 10-yard run made it 24-7 and came one play after Powell broke four tackles on his 51-yard jaunt that featured slick moves and plenty of speed.
The Bills hurt themselves further when Nick O'Leary fumbled on a strange play. The tight end caught Taylor's third-down pass and fell to the ground untouched. He delayed, heard no whistle, and got up. But the ball then was stripped by Marcus Maye and recovered by fellow rookie safety Jamal Adams.
Adding to the miscues, Bills defensive end Jerry Hughes drew a 15-yard unsportsmanlike conduct penalty for mouthing off to an official -- during a timeout, no less -- on the ensuing Jets drive.
Taylor also fumbled when sacked for the sixth time, and Forte's 5-yard TD run followed. And even when the Bills recovered a late onside kick, they were flagged for offside.
New York opened the scoring -- the fourth straight game it has led early -- after some strong defense pinned Buffalo near its goal line. A punt set up the Jets near midfield and they used eight plays to score.
McCown, looking very spry for a 38-year-old QB, went in untouched around the left side on a scramble for a 7-0 Jets lead.
Buffalo matched that, aided by Taylor's 18-yard scramble on third down. Rookie Zay Jones caught his first pro TD, an 11-yarder when he got wide open over the middle.
An offensive pass interference call on Austin Sefarian-Jenkins' touchdown catch negated the tight end's TD early in the second quarter and the Jets settled for Chandler Catanzaro's 45-yard field goal to retake the lead. He later hit a 32-yarder.
The Jets found a pass rush that was missing in action most of the year. They came in with 11 sacks, which was last among teams that had played eight games.
Buffalo scored two late touchdowns to make the final margin less lopsided.
"We were outplayed fundamentally. We weren't very good," coach Sean McDermott said.
Fireman Ed, once the team's unofficial cheerleader, led the J-E-T-S chant for the first time this season. It got pretty loud, too, even though there were several thousand empty seats at MetLife Stadium.
Bills: Jones, who was having a fine first half with four catches for 40 yards and a touchdown, was tripped by cornerback Buster Skrine and injured his right leg and was helped off. Jones, Buffalo's second-round draft pick, returned for the second half, but aggravated the leg. … Running back Taiwan Jones hurt his left arm in a scramble for a fourth-quarter onside kick.
Jets: WR Jeremy Kerley left in the first quarter with an ankle injury. LB Bruce Carter (hamstring) was sidelined in the second half.
Bills: Host New Orleans on Nov. 12.
Jets: Visit Tampa Bay on Nov. 12.