The 2018 Falcons season ended with Matt Ryan taking a knee on three consecutive plays before Matt Bryant kicked the game-winning field goal. That came after Ryan threw an interception to set up Tampa Bay’s go-ahead score with five minutes to go. All that happened after the Falcons were listless for a half, dominate in between and then did just enough at the end to overcome their own foibles.

The Falcons are good enough to come back from 17 points down to beat an NFC South foe on the road. But the Falcons are flawed enough that they faced that deficit in the first place, against an opponent with less talent and no more incentive. That sounds about right for their season.

The Falcons finished 7-9 with three consecutive victories to finish the season. All came against opponents who also are going nowhere. There were two impressive victories against Arizona and Carolina, followed by this uneven effort in Tampa Bay.

The Falcons were joyous after winning at Carolina in Week 16. They were more subdued after beating Tampa Bay in Week 17. Not even coach Dan Quinn was ready to say that winning three in a row to end this season will necessarily boost his team’s confidence for the next.

“But there is a lesson you can learn about fight and resilience and sticking together,” Quinn said. “Knowing that they have a connected group, where you know you are never out of a fight. It’s hard to carry over morale, especially when you have a disappointing season.

“But there are lessons that you can carry over and that’s what I hope to do.”

There is value in that. Also, there are some unambiguously good things to take from the Falcons’ last three games. Tops among them was the reemergence of their running game, which churned out 109 yards against the Bucs.

The Falcons averaged just 3.6 yards per carry. But they kept at it until Tevin Coleman broke one 23 yards for a touchdown that gave them their first lead, 24-20, near the end of the third quarter. And their persistence running the ball paid off via Ryan’s sharp play-action game.

The comeback in this game, and the dominate victory at Carolina, showed that the Falcons still have plenty of talent. They have more good skill players than most. In a passing league, the Falcons can throw with the best of them.

Julio Jones remains an elite receiver. A week after playing a supporting role on a bad hip, Jones had nine catches for 138 yards and a touchdown against Tampa Bay. Mohamed Sanu, Calvin Ridley and Austin Hooper form a deep group of pass catchers around him.

Ryan still is a top-tier quarterback. He passed for 378 yards and two touchdowns against the Bucs and even caught his first pass as a pro, a five-yard TD from Sanu.

Ryan played much of the season with shaky protection and no running game. Yet his production looks almost like his MVP season: 69.4 percent passing, 4,924 yards, 35 touchdowns and seven interceptions.

Once the Falcons got started, the Bucs couldn’t stop them. Near the end of the first half the Falcons went 75 yards for a touchdown in just 26 seconds. Coleman scored his touchdown 35 seconds after Damontae Kazee intercepted Bucs QB Jameis Winston’s pass.

The Falcons spotted the Bucs 17 points before outscoring them 34-15. Watching this, my thoughts wandered to what could have been.

What if key Falcons defenders Deion Jones, Keanu Neal and Ricardo Allen didn’t all go on injured reserve early? If Devonta Freeman stayed healthy would the running game have been more serviceable for longer behind that line?

A luckier bounce or two for the Falcons in close losses to New Orleans, Cincinnati and Dallas might have meant nine victories and an NFC wild card berth.

“The margin for error in this league is razor thin,” Ryan said. “If we make a few plays in some games throughout the course of the year, you could’ve been a very different football team. It’s disappointing but it also leads me to be optimistic for us moving forward that we have the right people.”

In some areas, yes, but not so much in others. This game also reminded why the Falcons too often were on the other side of that thin margin. They won, but they were lethargic while falling behind 17-0 and slippy throughout (nine penalties for 85 yards).

And the Falcons blinked when they had a chance to put away the Bucs long before the final whistle. Before leading the game-winning drive, Ryan threw one of his inexplicable interceptions.

The Falcons had a first-and-10 at their 37 yard-line and a 31-26 lead with six minutes on the clock. Ryan scrambled before overthrowing Justin Hardy to Bucs safety Andrew Adams. Tampa Bay scored the go-ahead touchdown two plays later.

“Certainly it was inopportune but, as the same time, we’re getting the ball back, we’ve got an opportunity to go win this football game. That’s where my focus was,” Ryan said.

On their game-winning drive the Falcons went 56 yards in 13 plays while chewing up 5:10. The key play was a 16-yard catch by Jones on third-and-11. Finally, the Falcons could run out the clock and let Bryant win the game.

But two plays before Jones made that big catch he had an unnecessary roughness penalty that pushed them out of field-goal range. To win, the Falcons had to overcome bad plays by their two best players at the worst times and a defense that allowed 7.7 yards per play.

To their credit, the Falcons did it. Over the final three weeks of a lost season, the Falcons showed they have a lot to work on for 2019, but they also have a lot to work with.