This weekend, NFL fans were blessed with two jam-packed days of football. With three games on both Saturday and Sunday, it was determined which wild card teams would continue in the playoffs and which would be sent home.

Generally, the lower-seeded teams were the most successful. Clubs like the Seattle Seahawks, the Tennessee Titans and the Pittsburgh Steelers had early exits, while several underdog teams moved on to the next round. Here is an in-depth look into each game and what happened on Wild Card Weekend.

Indianapolis Colts @ Buffalo Bills

Even if you’re not a Colts or Bills fan, this game was very fun to watch. With one of the league’s newest quarterbacks facing off against one of its oldest, Josh Allen led Buffalo to the franchise’s first postseason win in 25 years in spectacular fashion. Allen completed 26 of 35 passes for 324 yards, scoring two touchdowns and running 54 yards for a third.

On the other side of the ball, Indianapolis never really seemed out of the game. Colts QB Philip Rivers completed 27 of 46 passes for 309 yards, and there was a chance for Indianapolis to come back and win it on the final play of the game. Rivers chucked the ball practically half the length of the field towards T.Y. Hilton, but unfortunately for the Colts, Buffalo’s Micah Hyde was all over it. The cornerback smacked the ball down and finalized the win for the Bills, 27-24.

Los Angeles Rams @ Seattle Seahawks

In perhaps one of the more physical games of the weekend, the sixth-seeded Rams bested the Seahawks on their own turf. Los Angeles started QB John Wolford for the second week in a row since Jared Goff underwent surgery on his thumb, but the backup quarterback ended up being removed from the game after taking a hard hit from Jamal Adams and injuring his neck. In his place, Goff completed nine passes on nine attempts for a total of 155 yards.

Even with such a strong, dynamic offense, Russell Wilson and company could not find the chink in the LA defense’s armor. Pro Bowl wide receiver DK Metcalf, who tore up plenty of defenses throughout the regular season, was held to 96 yards, although he still recorded two receiving touchdowns. It was clear early in the game that 23-year-old Metcalf was struggling, perhaps mostly against Los Angeles Pro Bowl cornerback Jalen Ramsey’s man coverage.

Additionally, LA’s Aaron Donald and the rest of the defensive line would not let Wilson breathe in the pocket; the Seattle QB was sacked five times and threw one interception. Donald left the game in the third quarter with a rib injury, and Rams WR Cooper Kupp—who caught four passes for 78 total yards—also left the game in the fourth. Donald is expected to play next week in the Rams matchup with the Green Bay Packers, but Kupp is still day-to-day.

Los Angeles beat Seattle 30-20.

Photo by Steph Chambers/Getty Images

Tampa Bay Buccaneers @ Washington Football Team

In the final game on Saturday, Tom Brady did what Tom Brady does, however, the game was much closer than I would have thought. With QB Alex Smith out for Washington, the Football Team put in Taylor Heinicke, a quarterback who previously had just one career NFL start.

Brady threw for 381 yards and had two touchdowns against a strong Washington defense, while Heinicke threw for 306 yards and recorded one rushing touchdown. For Brady, who is no stranger to postseason play, he sure had a run for his money against a quarterback who most viewers have never seen or heard of.

Tampa Bay’s Antonio Brown and Chris Godwin each recorded a receiving touchdown, while Leonard Fournette rushed in for one of his own. The Buccaneers took the W, 31-23.

Baltimore Ravens @ Tennessee Titans

It’s no secret that all eyes were on Baltimore QB Lamar Jackson for this matchup. Not only had the reigning MVP never won a playoff game, but he and the Ravens were previously booted out of the playoffs two times by the very team they played on Sunday.

In order to beat the rival Titans, Jackson and the Ravens had to produce while limiting Tennessee’s powerful offense, and they did just that. Baltimore’s defense held dominant RB Derrick Henry to just 40 total rushing yards, causing Tennessee to score its fewest amount of points all season.

After throwing an ugly interception in the first quarter, Jackson ended up completing 17 of 24 passes and throwing for 179 yards. Though he did not throw for a touchdown the entire game, he ran an insane 48 yards in the second quarter to record the second-longest rushing touchdown by a quarterback in NFL playoff history.

With just two minutes left, Baltimore’s Marcus Peters intercepted a pass from Titans QB Ryan Tannehill, and the game was pretty much over. Peters and the rest of the Baltimore defense took the picked ball to the center of the field and began dancing and stomping on their rival’s logo, earning them a 15-yard unsportsmanlike conduct penalty. Baltimore won the game, 20-13.

Photo by Wesley Hitt/Getty Images

Chicago Bears @ New Orleans Saints

With the entire elite squad back on the field, the Saints were a sure favorite against the Bears Sunday afternoon. Michael Thomas and Alvin Kamara were both healthy and ready for this matchup, leaving QB Drew Brees with plenty of options on offense. Brees completed 28 of his 39 passes for 265 yards, recording a passing touchdown to both Thomas and RB Latavius Murray respectively.

From the very beginning, it seemed as though New Orleans was quite comfortable against Chicago’s defense. Brees’s touchdown pass to Thomas came early in the first quarter, while the Bears didn’t put any points on the board until a 36-yard field goal in the second. Bears QB Mitchell Trubisky completed 19 of 29 passes for 199 yards and finally threw a touchdown pass to Jimmy Graham in the final seconds of the game. The Saints beat the Bears, 21-9.

Cleveland Browns @ Pittsburgh Steelers

In dramatic and appropriate fashion, the most exciting game of the weekend took place on Sunday night. The Cleveland Browns—led by one of my favorite commercial actors, Baker Mayfield—were an absolute force against the Steelers, who looked like they weren’t really sure how to play football until after the first half. In the very first play of the game, the Steelers snapped the ball over QB Ben Roethlisberger’s head and into the endzone, where it was then pounced on by the Brown’s defense for an immediate touchdown. If Steelers fans weren’t ticked off at that point, they plenty of other chances, including any of Roethlisberger’s three interceptions in the first half.

Big Ben ended up completing 47 of his 68 passes for 501 yards. He threw four touchdowns: two to Chase Claypool, one to Eric Ebron and one to JuJu Smith-Schuster.

Although the Steelers ended up pulling themselves together and putting a decent amount of points on the board, you don’t win games by only playing one half, and the Browns proved that. Cleveland had their foot on the gas from (clearly) the very first play of the game, and that is what I think allowed the six-seed Browns to take the W over a team that won 11 games in a row during the regular season. Mayfield completed 21 of 34 passes and threw three touchdowns  to Jarvis Landry, Nick Chubb and Austin Hooper. RB Kareem Hunt also recorded two rushing touchdowns. The Browns shocked the Steelers and won 48-37.