Seattle Mariners The
Seattle Mariners selected O'Neill in the third round of the
2013 MLB draft. He signed with the Mariners and made his professional debut with the
Arizona League Mariners. In 2014, O'Neill played in only 51 games between the Arizona League Mariners,
Everett AquaSox, and
Clinton LumberKings because he broke a bone in his right hand by punching a concrete wall in the dugout. He spent 2015 with the
Bakersfield Blaze, where he posted a .260 batting average along with 32 home runs and 87 RBIs. He spent 2016 with the
Jackson Generals of the
Southern League, where he batted .293 with 24 home runs and 102 RBIs. Jackson won the Southern League
championship after a league best 84–55 record, and O'Neill was the
Southern League Most Valuable Player (MVP). In seven playoff contests, he batted .448, three home runs and eight RBIs. He began 2017 with the
Tacoma Rainiers of the
Class AAA Pacific Coast League (PCL).
St. Louis Cardinals 2017 On July 21, 2017, the
St. Louis Cardinals acquired O'Neill for pitcher
Marco Gonzales and assigned him to the
Memphis Redbirds of the PCL. O'Neill finished 2017 with a combined .246 batting average, 31 home runs, and 95 RBIs in 130 games between Tacoma and Memphis. The Redbirds became the 2017
PCL champions after defeating the
El Paso Chihuahuas in five games in the league championship final, giving O'Neill consecutive minor league championships with two organizations at two levels. The Cardinals added him to their
40-man roster after the season to protect him from being chosen in the
Rule 5 Draft.
2018 MLB.com ranked O'Neill as St Louis' fourth-best prospect going into the
2018 season. He competed in
spring training, seeking to make the major league roster as a reserve, but hamstring and oblique injuries meant he began the season with Memphis. He was promoted to MLB on April 19, 2018. He had been leading the PCL with six home runs and 18 RBI. He made his MLB debut the next night at
Wrigley Field against the
Chicago Cubs, making him the sixth Canadian-born player to appear on an active MLB roster on the season. He was sent back down on April 28 after seven hitless at-bats, then recalled again on May 18. He mustered his first MLB hit, a single off
Yacksel Ríos of the
Philadelphia Phillies that night in a 12–4 St. Louis win. O'Neill hit his first MLB home run the next day off
Luis García. On May 21, he amassed his first four-RBI game, and homered in his third consecutive game the following day. He was optioned back to Memphis on May 31 and was recalled by St. Louis for the second time on July 2 to take the spot of
Dexter Fowler, who had gone on paternity leave. He was placed on the 10-day
disabled list on July 5 with a hamstring strain, was activated on June 17, and was optioned back to Memphis. He was recalled once again on July 31 following the trade of
Tommy Pham, and spent the remainder of the season in St. Louis. He hit his first
walk-off home run on September 22, a 414-foot shot against the
San Francisco Giants, leading St. Louis to a 5–4 victory. In 61 games for the Cardinals, O'Neill batted .254 with nine home runs and 23 RBIs.
2019 In 2019, O'Neill made St. Louis' Opening Day roster, but his season was interrupted by injuries and more than a month in Memphis. He was recalled to St. Louis in June, and finished the year with them. In sixty games, he hit .262 with five home runs and 16 RBIs.
2020 O'Neill made St. Louis' Opening Day roster in 2020, and spent the whole season there starting in the outfield, slashing .173/.261/.621 with seven home runs and 19 RBIs over 139
at-bats. After the season, he was awarded his first
Gold Glove Award for left field after leading major-league left fielders with nine defensive runs saved and four outs above average and not committing an error in 344 innings.
2021 O'Neill returned as St. Louis' starting left fielder in 2021. On September 20, O'Neill was named the National League Player of the Week after leading the Cardinals to a 6–0 week while batting .391 with three home runs, nine runs scored, and a 1.308 OPS. He was named the National League Player of the Month for September after hitting .328/.377/.731 with 13 home runs, thirty RBIs, and a 1.108 OPS. O'Neill finished the 2021 season with 482
at-bats over 138 games, slashing .286/.352/.560 with 34 home runs, eighty RBIs, and 15 stolen bases. He won his second consecutive
Gold Glove Award in left field, one of five Cardinals to win that year—an MLB record.
2022 O'Neill opened the season as the club's starting left fielder. In mid-May, he lost his
salary arbitration case against the Cardinals, resulting in a $3.4 million salary, not his requested salary of $4.15 million. He struggled to open the season, slashing .195/.256/.297 with two home runs and 42 strikeouts over 32 games before he was placed on the injured list in mid-May with a sore shoulder. He was activated on June 7. On June 20, he was placed back on the injured list with a hamstring injury before being activated in mid-July. He was placed back on the injured list with another hamstring injury in September, and missed the remainder of the season. Over 96 games with the Cardinals, he hit .228 with 14 home runs and 48 RBIs. He was sent to play for the
Salt River Rafters of the
Arizona Fall League after the season to rehab.
2023 On January 13, 2023, O'Neill agreed to a one-year, $4.95 million contract with the Cardinals, avoiding salary arbitration. O’Neill hit .228 in 29 games for St. Louis before he was placed on the injured list with a lower back strain. He was transferred to the 60-day injured list on June 16. He was activated on July 20. O'Neill hit home runs for the Cardinals in four consecutive Opening Day games, from 2020 through 2023, tying a major-league record achieved by
Todd Hundley,
Gary Carter, and
Yogi Berra).
Boston Red Sox On December 8, 2023, the Cardinals traded O'Neill to the
Boston Red Sox for
Nick Robertson and Victor Santos. O'Neill hit a home run in Boston's Opening Day game against the
Seattle Mariners, giving him five consecutive Opening Day home runs, a major-league record. O'Neill followed his record-breaking Opening Day home run with another home run against the Mariners, and three against the
Los Angeles Angels on the season-opening West Coast road trip. He also hit a home run in his first at-bat at
Fenway Park against the
Baltimore Orioles to lead the Majors. In 133 games for the Red Sox, O'Neill slashed .241/.336/.511 with 31 home runs and 61 RBI.
Baltimore Orioles On December 10, 2024, O'Neill signed a three–year, $49.5 million contract with the
Baltimore Orioles. He hit his sixth consecutive Opening Day home run on March 27, 2025, against the
Toronto Blue Jays, extending his MLB record. On November 3, 2025, O'Neill opted into the remainder of his contract with the Orioles. He did not homer on Opening Day in 2026, ending his record streak. ==International career==