Tommy Gilligan-USA TODAY Sports

Tyler Bass kicked a 21-yard field goal as time expired to complete the Buffalo Bills' 23-20 comeback win Sunday over the host Baltimore Ravens.

The Ravens led 20-3 late in the first half before the Bills rallied to tie the game. At the end of a 14-play drive in the fourth quarter, Jordan Poyer intercepted Lamar Jackson on fourth and goal at the 2-yard-line.

As the Bills drove downfield, Ravens corner Brandon Stephens was called for roughing the passer, giving Buffalo 15 yards and a fresh set of downs.

Buffalo (3-1) reached the 1-yard line inside of 2 minutes and induced the Ravens (2-2) to exhaust their timeouts. Josh Allen then knelt twice to eat the rest of the clock before Bass' game-winner.

Allen threw for 213 yards, one touchdown and one interception and led the Bills in rushing with 70 yards and a score on 11 carries.

Lamar Jackson had a game-high 73 rushing yards and threw for 144 yards with a touchdown and two picks. J.K. Dobbins scored two touchdowns as the Ravens blew another lead against an AFC East opponent after the Miami Dolphins stormed back in Week 2.

On the third play of the game, Baltimore's Calais Campbell grazed Allen's pass at the line and Marlon Humphrey picked it off, returning it 26 yards to the Buffalo 8-yard line. That set up Jackson's 1-yard shovel pass to Dobbins for a touchdown.

After Bass converted a 38-yard field goal for the Bills to cut it to 7-3, the Ravens went 81 yards in 15 plays to strike again. Dobbins found an open lane for a 4-yard touchdown.

With rain pouring down in Baltimore, Bills running back Devin Singletary lost a fumble in the final minute of the quarter, and Justin Tucker made a 42-yard field goal early in the second quarter. Tucker added a 51-yarder with 3:39 left in the half to give Baltimore a 20-3 advantage.

Allen led Buffalo on a 76-yard drive in 1:38 at the end of the half, ending in a 4-yard touchdown pass to Isaiah McKenzie to make it 20-10 at intermission.

Bass trimmed it to 20-13 with a 39-yard field goal on the opening drive of the second half. After forcing a punt, the Bills drove 80 yards and Allen scrambled left on a play-action play for a game-tying 11-yard touchdown run.

The Bills lost receivers Jamison Crowder (ankle) and McKenzie (concussion) during the third quarter.

More must-reads:

TODAY'S BEST
Pacers' Pascal Siakam leads team to Game 6 win vs. Knicks
Watch: Matt Duchene's 2OT winner sends Stars to conference final
Scottie Scheffler shoots improbable 66 after warming up for PGA Championship in a jail cell
Report: Tua Tagovailoa away from Dolphins amid contract chatter
Nuggets star has worrying comment about latest injury
Paul Skenes makes incredible Wrigley Field history in second-career MLB start
Giants rookie CF to undergo season-ending labrum surgery
Yankees' Juan Soto reacts to Hal Steinbrenner contract talk
Late goal sends Panthers to Eastern Conference Finals
Ex-teammate of Shohei Ohtani placed bets with same illegal bookmaker as interpreter 
Former Rams first-round pick retires from NFL after 11 seasons
Insider provides major injury update on Celtics' Kristaps Porzingis
Watch: Bruins strike first in Game 6 with incredible backhand goal
Dodgers make series of moves involving notable players
Hurricanes not expected to re-sign defenseman, center
Maple Leafs tab former Stanley Cup winner as new head coach
NFL insider expands on competition between Steelers QBs Russell Wilson, Justin Fields
NFL sets outrageous prices for Eagles-Packers Brazil game
Broncos 'very unlikely' to bring back former NFL interceptions leader
Greg Olsen offers broadcasting advice to Tom Brady

Want more NFL news?

Join the hundreds of thousands of fans who start their day with Yardbarker's Morning Bark, the best newsletter in sports.