After Pujols was designated for assignment in May 2021, Walsh became the primary first baseman for the Angels and received his first career All-Star selection later that year. On June 11, 2022, he became the ninth player in Angels history to hit for the cycle, doing so at Angel Stadium against the New York Mets.
The Angels invited Walsh to spring training in 2019, where they continued to use him as a two-way player.[6][7][8] He returned to Salt Lake to begin 2019. On May 15, 2019, his contract was selected and he was called up to the major leagues.[9] He made his debut that day versus the Minnesota Twins, where he went 3 for 4.[10] On May 26, Walsh recorded his first career run batted in (RBI) with a walk-off bloop RBI single against the Texas Rangers. In 2020, Walsh finished second on the team in home runs (9) despite only playing in 32 games, batting .293/.324/.646.
In the spring of 2020, Walsh suffered an arm injury which prevented him from pitching, forcing him to focus only on hitting and playing first base.[11] Walsh made the 2020 Opening Day roster[12] and performed well enough in the shortened season to finish seventh in voting for the American League Rookie of the Year Award.[13] His season was described as a "breakout" and a "bright spot" in a disappointing year for the Angels.[14][15][16]
Prior to the 2021 season, Angels manager Joe Maddon said that the team did not plan to have Walsh pitch and were choosing to focus on his offense and defense, due in large part to his success in the prior season as a first baseman.[11] In May 2021, the Angels released first baseman and designated hitterAlbert Pujols in part to free up playing time for Walsh whose success had carried over from the prior season.[17][18] 2021 proved to be Walsh's breakout year, as he batted .277/.340/.509 with 29 home runs and 98 RBIs in 144 games and was named to the American League All-Star team. Against left-handers, however, he had a .208 on base percentage, the lowest in the major leagues.[19]
On June 11, 2022, Walsh hit for the cycle against the New York Mets, becoming the 9th player in franchise history to do so.[20] Walsh struggled offensively throughout 2022, batting .215/.269/.374 in 118 games. On August 25, he was diagnosed with thoracic outlet syndrome and placed on the 60-day injured list, officially ending his season.[21][22] Angels hitting coach Jeremy Reed attributed Walsh's lack of offensive production to the injury, stating that he had been playing through it.[23] On September 1, Walsh successfully underwent surgery with the expectation he would be ready to play by the following year's spring training.[24]
On January 13, 2023, Walsh signed a one-year, $2.65 million contract with the Angels, avoiding salary arbitration.[25] In 2023, he dealt with neurological symptoms, including headaches and insomnia,[26] and hit .119 with one home run and five RBIs in 28 games. On July 27, Walsh was designated for assignment by the Angels following the team's acquisition of Lucas Giolito and Reynaldo López.[27] On August 1, Walsh cleared waivers and accepted an outright assignment to the Triple-ASalt Lake Bees.[28] On September 14, Walsh had his contract selected back to the major league roster.[29] In 39 total games for the Angels in 2023, he hit .125/.216/.279 with 4 home runs and 11 RBI. Following the season on October 16, Walsh was removed from the 40–man roster and sent outright to Salt Lake. However, he rejected the assignment and subsequently elected free agency.[30]
Texas Rangers
On January 25, 2024, Walsh signed a minor league contract with the Texas Rangers.[31] On March 28, Walsh had his contract selected after making Texas' Opening Day roster.[32] In 17 games he hit .226/.317/.321 with one home run and seven RBI. Walsh was designated for assignment after Nathaniel Lowe returned from the injured list on April 20.[33] He cleared waivers and was sent outright to the Triple–A Round Rock Express on April 24; he subsequently rejected the assignment and elected free agency.[34]
Chicago White Sox
On April 30, 2024, Walsh signed a minor league contract with the Chicago White Sox.[35] In 41 games for the Triple–A Charlotte Knights, he batted .185/.289/.415 with eight home runs and 17 RBI. Walsh was released by the White Sox organization on July 16.[36]