Winn began playing varsity baseball for Pekin, whose baseball field used to be a corn field, when he was in eighth grade.[10][11] In addition to playing second base, as a two-way player Winn pitched a 20-strikeoutperfect game in 2015.[12][13][14] In his junior year, he had a 6–2 win–loss pitching record with an 0.65 earned run average (ERA) in 53.2 innings, with 11 walks, 85 strikeouts, and an opponent's batting average of .067.[15] As a batter in his junior year, Winn hit .372/430/.564 in 78 at bats and was 9-for-9 in stolen bases.[15] In his senior year as a pitcher he went 3–1 in 33 innings with 66 strikeouts, and held batters to a .081 batting average.[14] As a batter in his senior year, he hit .413/.500/.714 and was 16-for-16 in stolen bases.[14]
Winn was selected by the San Francisco Giants in the 20th round of the 2017 MLB draft, but he decided to return to Iowa Western for one more season.[12] The following year, he was drafted by the Giants again, this time in the fifth round, with the 136th overall selection, of the 2018 MLB draft, and signed for an over-slot $500,000 signing bonus.[19][20]
Winn did not play in a game in 2020 due to the cancellation of the minor league season because of the COVID-19 pandemic.[19][1][16] Winn had Tommy John surgery prior to the 2021 season and missed the entire year.[21]
In 2022, returning to pitching midway through the season after nearly three years away from the game, he played for the Single-A San Jose Giants, the High-AEugene Emeralds, and the Double-ARichmond Flying Squirrels.[1][22] He had a combined 6–6 record with a 4.08 ERA in 27 games (25 starts) during which he pitched 108 innings and struck out 125 batters.[1] Winn's velocity reached the upper-90s, and he threw a plus mid-80s splitter.[18][19] On November 15, 2022, the Giants added Winn to their 40-man roster to protect him from the Rule 5 draft.[23]
Winn was optioned to the Triple-ASacramento River Cats to begin the 2023 season.[24] In 12 games (9 starts) for the River Cats, Winn was 0–3 and registered a 4.35 ERA with 51 strikeouts in 41+1⁄3 innings pitched (11.1 strikeouts per 9 innings), and a 50.9% ground ball rate.[22][1] He has a mid-to-upper-90s fastball that has hit 100 mph, a "nasty" splitter, and a slider.[25][26] Giants manager Gabe Kapler said: "His split has a chance to be really evil."[27]
On June 12, 2023, Winn was promoted to the major leagues for the first time.[28] Before his call-up and until one day prior to his major league debut, the 25-year-old Winn had never in his life been to a Major League Baseball stadium.[25][27][10][29]
Winn made his MLB debut on June 13, against the St. Louis Cardinals, and in four innings gave up one run on one hit while walking three batters and striking out two.[29] His four-seam fastball reached 98.2 mph.[29] He became the first Giants pitcher to earn a save in his major league debut since saves became an official statistic in 1969.[29] Giants manager Gabe Kapler said: "He’s going to be good. He’s got a chance to be even better than he was tonight. He pitched well. He can pitch better."[29] Winn made 9 appearances (5 starts) during his rookie campaign, logging a 1–3 record and 4.68 ERA with 35 strikeouts and one save across 42+1⁄3 innings pitched.
Winn began the 2024 season out of San Francisco's rotation, compiling a 3–8 record and 7.16 ERA with 48 strikeouts over 12 starts. He was placed on the injured list with a right forearm strain on May 17, 2024,[30] and was transferred to the 60–day injured list on July 24.[31] On July 26, it was announced that Winn would undergo season–ending ulnar nerve transposition surgery.[32]