Justin Tucker booted a 49-yard field goal as time expired to lift the Baltimore Ravens to an eighth straight NFL victory Sunday, 20-17 over the San Francisco 49ers.

In a clash of Super Bowl contenders, Ravens quarterback Lamar Jackson completed just 14 of 23 passes for 105 yards in rainy weather that he admitted "messed with me a lot."

But he ran for 101 yards and a touchdown to help the Ravens improve to 10-2 for the first time in franchise history.

Tucker's game-winner was his 38th straight fourth-quarter field goal, the longest active streak in the league.

"I was glad I made the kick man," said Tucker, who was promptly hoisted onto the shoulders of his celebrating teammates.

"These are as tough of conditions as we've had to make kicks in before ... being able to come through when it's really tough, it's extra satisfying."

The Ravens had taken over at their own 35 yard line with 6:28 to play and advanced just nine yards on their first three plays.

Going for it on fourth down, Jackson got the first down on a quarterback sneak as the Ravens put Tucker in range.

"That golden leg. I got all the faith in him," Jackson said. "I'm on the sideline praying, but at the same time I know Tucker can do it."

Baltimore had led 17-14 at halftime, but the 49ers knotted the score at 17-17 with 3:37 left in the third on Robbie Gould's 32-yard field goal.

That was the only scoring in the second half until Tucker struck.

San Francisco had opened the game with a bang, scoring a touchdown 3:07 into the contest on quarterback Jimmy Garoppolo's 33-yard fourth-down pass to Deebo Samuel.

Garoppolo passed for 165 yards and the TD and running back Raheem Mostert ran for 146 yards and a touchdown for the 49ers, who at 10-2 are tied with the New Orleans Saints for best record in the NFC.

The Saints -- who have already clinched the NFC South division title -- host the 49ers next Sunday.

As playoff contenders wrestled for position in week 13 of the season, the Cincinnati Bengals grabbed their first win of 2019 with a 22-6 victory over the New York Jets.

Quarterback Andy Dalton, benched a month ago, returned to lead the Bengals, who snapped an 11-game losing streak.

Dalton completed 22 of 37 passes for 242 yards and a touchdown and the Bengals defense held the Jets -- who had scored 34 points in each of their last three games -- to two field goals.

The Jets became the first team in NFL history to lose twice in one season to teams with records of 0-7 or worse.

- Steelers beat Browns -

Elsewhere, Green Bay's Aaron Rodgers threw for 243 yards and four touchdowns without an interception in the Packers' 31-13 win over the New York Giants.

The Giants' NFC East rivals Philadelphia also lost, falling 37-31 to the lowly Miami Dolphins in a result that left the Dallas Cowboys alone atop the division.

The Cleveland Browns' playoff hopes dwindled with a 20-13 loss to NFC North division rivals the Pittsburgh Steelers.

Their clash came 18 days after a brawl erupted in a Cleveland win over Pittsburgh -- a melee that saw Cleveland defensive end Myles Garrett suspended indefinitely for his helmet swinging attack on Steelers quarterback Mason Rudolph.

With Rudolph on the bench, rookie Devlin Hodges made his second regular-season NFL start and passed for 212 yards and a touchdown in the victory.