The 2019-2020 season was a great one for the 49ers. Yes, it didn’t end with a Super Bowl win, but the season was very exciting and brought Championship-level football back to the Bay Area.

Just one year ago, no one would have guessed an NFC Championship was on the way; most were just hoping for a winning record.

Despite the heartbreak, there are still plenty of games and moments to reflect on fondly. Here are the top five games from this season:

No. 5 — Week 12 vs Green Bay. 49ers 37, Packers 8

Although not really a contest once it started, this game meant a lot for the 49ers. San Francisco (9-1) had yet to defeat anyone great to this point, going 0-1 against eventual playoff teams. This was their shot to shed the “pretender” label.

The game was a true test to see how far the 49ers had come in 2019. In fact, the game was flexed into prime-time, booting Seattle vs Philadelphia out of the national spotlight. For the first time since 2015, the 49ers would play on Sunday Night Football.

They were no longer cellar-dwellers, but they still had to prove they were contenders. A bad performance on SNF would not only hurt their spot in the NFC playoff picture, it would send them into the toughest stretch of their season (four playoff teams in six weeks) on a bad note.

The 49ers wasted no time. They dominated the Packers from the opening whistle. George Kittle caught all six targets for 129 yards and a touchdown. The defense, led by Arik Armstead’s two sacks, four QB hits and a TFL, sacked Aaron Rodgers five times and held the MVP to just 104 passing yards.

No. 4 — Week 9 at Arizona. 49ers 28, Cardinals 25

This will be remembered as the “Feels great, baby.” game. That’s what quarterback Jimmy Garoppolo said to Erin Andrews after he led the 49ers to a Halloween night victory on Thursday Night Football.

Garoppolo sure did look great as he threw for 317 yards and four touchdowns, both season-highs at the time. The game was also the start of a beautiful partnership between Garoppolo and the newly-acquired Emmanuel Sanders.

Sanders caught a touchdown in his San Francisco debut the week prior, but his impact was rather limited after that. In their second week together, Garoppolo and Sanders looked like teammates of 10 years. The receiver was always right where Garoppolo needed him, including a couple third-down conversions that helped seal the game.

On a much smaller scale, this gave some Bay Area baseball fans a chance to see the one that got away. Former Oakland Athletics first round pick, and the first overall pick in this year’s NFL Draft, Kyler Murray was under center for the Cardinals. He proved he made the right decision, throwing for 241 yards and two touchdowns against an elite defense.

No. 3 — NFC Championship vs Green Bay. 49ers 37, Packers 20

Just like the first episode of Green Bay vs San Francisco, this game wasn’t much of a contest. The Packers were over-matched from the start, but instead of Kittle and Garoppolo working their way downfield, it was running back Raheem Mostert rushing for 220 yards and four touchdowns. The six-time released Mostert cemented his place in 49er lore with that historical performance.

The 49ers proved they were just plain better at football than the Packers. Everyone watching knew they were going to run the ball and the Packers simply could not stop it.

Garoppolo only attempted eight passes. Instead of wallowing about not getting the ball, the entire offense put their egos aside and blocked for Mostert. Kittle, Kendrick Bourne, Deebo Samuel and Kyle Juszczyk all had great blocks that led to touchdowns.

It’s rare to see a semifinal be so lopsided. The Green Bay offense did orchestrate a last-effort comeback in the end, but it was too late. The 49ers earned their first trip to the Super Bowl under head coach Kyle Shanahan. The game also had the two best dad moments, with Mostert holding his son on the stage, and Shanahan receiving the trophy from his legendary coach and father, Mike.

The game might not have been the most competitive, but it was probably the most meaningful for the franchise and its fans. The 49ers were Super Bowl bound for the first time since 2013.

No. 2 — Week 14 at New Orleans. 49ers 48, Saints 46

Following a disappointing loss at the AFC-leading Ravens, the 49ers had fallen to second place for the first time. To make matters worse, they had to stay on the road to take on the NFC-leading Saints.

Drew Brees moved the ball down the field with relative ease. The 49ers won all season with their defense, but it was apparent from the opening drive that would not be the case here. After three drives, the Saints had three touchdowns and a 20-7 lead. Shanahan had to reach deep into his bag of tricks to get the 49ers back in the game, and boy did he.

On the first play after going down 20-7, Garoppolo unleashed a 75-yard touchdown to Sanders. After the defense surrendered another touchdown, Sanders himself threw a 35-yard touchdown to Raheem Mostert to get the 49ers back within two scores.

The 49ers and Saints would go on to trade seven more scores before Drew Brees hit Tre’Quan Smith for a go-ahead touchdown with 60 seconds left.

Trailing by one and only a minute to work with, Garoppolo had to lead one more scoring drive. But the drive quickly stalled to a fourth-and-2 on their own 33-yard line. Rather than do anything drastic, Garoppolo kept things simple. He hit Kittle across the middle, allowing his best playmaker to do the work.

Kittle did just that, fighting a face mask while carrying defenders 39 yards. It was the offensive play of the year. Robbie Gould would go on to hit the game-winner to put them back in the win-column.

No. 1 — Week 17 at Seattle. 49ers 26, Seahawks 21

Although it was officially part of the regular season, this was truly San Francisco’s first playoff game under Shanahan. A win would earn the 49ers the top seed in the NFC, the very coveted first-round bye and home field advantage. A loss would not only relegate the 49ers to the Wild Card, it would finish off a decade of dominance by Seattle (14-7 vs SF) and hand them the NFC West title.

Just as they had battled until the final game of 2019, the two teams were still fighting with seconds to go. Trailing by 5, Seattle had worked its way to the San Francisco one-yard line with 23 seconds to go.

After a spike, delay-of-game and two incompletions, Seattle had just one play to get five yards. The fourth-and-goal from the five would not only decide the NFC West, but the entire NFC Playoff picture.

Russell Wilson dropped back and hit tight end Jacob Hollister across the middle, but rookie linebacker Dre Greenlaw stuffed him short of the goal line. The play won the 49ers the NFC West for the first time since 2012 and won them their first game in Seattle since 2011. The beast that is Wilson at home had finally been conquered. The 49ers were 0-8 against Wilson at CenturyLink Field.

The game will likely be remembered for just one play, and that’s alright. The Greenlaw goal line stop was the highlight of the season.