Well, it’s all over but the crying, and as the last day of the 2019 MLB regular season plays itself out, we hope you’ll be popping a cork to celebrate a fantasy championship. If not, there’s always next year.

Here is our 2019 All-Star team for fantasy baseball. If you had two or three of these players on your roster, you probably had a stellar season. If not, well … that’s what the opening line above emphasized.

See you next March for a whole new season of fantasy fun!

Catcher: J.T. Realmuto, Philadelphia Phillies. He got off to a slow start, but Realmuto finished with 25 home runs, 83 RBI, and a .275 average. He also stole nine bases to add to his diverse statistical achievements. Patience paid off here for fantasy owners.

First Base: Cody Bellinger, Los Angeles Dodgers. What a year, and it should end up getting him the National League MVP Award. Bellinger hit .303 with 47 HRs, while driving in 115 runs and stealing 15 bases. And he’s only 23 years old.

Second Base: Jonathan Villar, Baltimore Orioles. It is hard to believe that Baltimore has a player on this roster, but Villar earned his spot with 24 HRs, 72 RBI, and 40 SBs. The .274 average is acceptable with that kind of stat line elsewhere.

Shortstop: Trevor Story, Colorado Rockies. What would this lineup be without a Colorado player in it? Story hit a career-best .294 while also slugging 35 HRs and driving in 85 runs while stealing 23 bases. Remember when shortstops couldn’t hit??

Third Base: Rafael Devers, Boston Red Sox. He was a sleeper pick in March drafts, and oh, did it pay off! He set career highs in every fantasy category (32 HRs, 115 RBI, .308 average, eight SBs, 128 runs). And he’s only 22 years old!

Middle Infield: Ketel Marte, Arizona Diamondbacks. This season came out of nowhere, as Marte had hit just 22 HRs in parts of four prior seasons. But he slugged 32 dingers this year, in addition to driving in 92 runs and stealing 10 bases while hitting .329 overall. Oh, and he was eligible in the outfield, too.

Corner Infield: Anthony Rendon, Washington Nationals. He hit .319 with 34 HRs and 126 RBI. Perfect timing as he heads into free agency, right? He also hit 44 doubles, which gave him the NL lead there for the second season in a row. He can flat-out hit.

Outfield: Christian Yelich, Milwaukee Brewers. Even though he played in just 130 games, he was still the best fantasy player at his position in 2019. He hit .329 to win his second straight batting title, and the 44 HRs, 97 RBI, and 30 SBs were just icing.

Outfield: Ronald Acuña, Jr., Atlanta Braves. We would like to see him steal three bases today in the season finale, so he can get a 40-40 season at age 21. The 41 HRs and 101 RBI already go nicely with a .280 average and the 37 SBs to date.

Outfield: Mike Trout, Anaheim Angels. It is hard to believe he’s only 27 years old, and like Yelich, he is here despite missing a month of games this season. Trout still hit 45 HRs and drove in 104 runs, while also batting .291 and stealing 11 bases. Not bad, old man!

Outfield: Mookie Betts, Boston Red Sox. He also got off to a slow start before finishing strong with 134 runs scored, 29 HRs, 79 RBI, 16 SBs, and a .293 batting average. This wasn’t quite his 2018 MVP campaign, but it still played well in fantasy baseball.

Outfield: Starling Marté, Pittsburgh Pirates. No relation to Ketel, except in fantasy production. His 23 HRs, 82 RBI, and 25 SBs provided a nice well-rounded stat line, and his .295 batting average didn’t hurt, either.

Utility: Nolan Arenado, Colorado Rockies. At age 28, he is having a stellar career already. This season, he hit a career-high .315 while also slugging 41 HRs, while driving in 118 runs. Expect a fifth-straight Top 10 finish in the NL MVP voting for Arenado.

Starting Pitcher: Justin Verlander, Houston Astros. What he did this year should not be possible at age 36. With a 21-6 record and a 2.58 ERA, he also added 300 strikeouts and an unreal 0.803 WHIP. He gave up just 5.5 hits per nine innings. That should be illegal.

Starting Pitcher: Gerrit Cole, Houston Astros. He led the AL in ERA (2.52) and strikeouts (316), while also posting 19 victories and a 0.887 WHIP. At 28 years old, Cole is in his prime and should be able to replicate these numbers for a few more seasons.

Starting Pitcher: Jacob deGrom, New York Mets. Following up his 2018 Cy Young season wasn’t going to be easy, but deGrom did it. He won just 11 times, but his ERA (2.43), WHIP (0.971), and K totals (255) were stellar nonetheless. deGrom led the NL in Ks and WHIP, by the way.

Starting Pitcher: Stephen Strasburg, Washington Nationals. This was by far his best season at age 30. Strasburg posted 18 victories, 251 Ks, and a 1.038 WHIP. His ERA was solid enough (3.32), and he someone led the NL with just 209 innings pitched. Weird.

Starting Pitcher: Zack Greinke, Houston Astros. Yeah, the ‘Stros should be favored to win the Series with this rotation. His 0.982 WHIP gives Houston three starters that don’t let runners on base. His 18 wins and 2.93 ERA are pretty good, too.

Relief Pitcher: Josh Hader, Milwaukee Brewers. With 37 saves and 138 Ks, he anchored the back end of any successful fantasy team’s bullpen. Makes you wonder how his ERA (2.62) was so high, though. He did give up a lot of HRs.

Relief Pitcher: Kirby Yates, San Diego Padres. His 1.19 ERA was stellar, of course, but the NL-best 41 saves were pretty good, too. Toss in 101 Ks, and it’s arguable that Yates was better than Hader this season.

Relief Pitcher: Roberto Osuna, Houston Astros. Hey, look! Another Houston pitcher. His 38 saves led the AL in 2019, although the rest of his numbers were just merely good this year (2.63 ERA, 75 Ks in 63 IP). The 0.877 WHIP fits right in with the starters, too.

Relief Pitcher: Liam Hendriks, Oakland Athletics. Despite blowing too many saves (7), Hendriks posted a 1.80 ERA with 25 saves and 124 Ks in just 85 IP. The 0.965 WHIP is acceptable for a closer, too.

A four-year archive (2014-2017) of these MLB fantasy columns previously published on CBS Local Sports can be found here. This season’s current archive also can be accessed easily!