García was invited to spring training with the Detroit Tigers in 2011 and 2012. After the 2011 season, he was added to the Tigers 40-man roster. He was named 2012 Minor League Player of the Year for the Tigers farm system, and first appeared on the major-league team on August 31, 2012. He hit.319 in 23 games, and made the playoff roster, appearing in the League Division Series, League Championship Series and 2012 World Series. In 23 postseason at-bats, García hit.261 with a double and four RBIs. in 2012 He is noted for his resemblance to former teammate Miguel Cabrera, earning him the nickname "Mini Miggy". Both stand tall, weigh, bat right-handed, and hail from Venezuela, although Cabrera has an advantage in batting.
2013
García entered the 2013 season with an outside shot to make the Tigers' opening day roster, but that possibility ended when he was placed on the 15-day disabled list March 26 with a heel contusion. He was brought up to the Tigers in May when Austin Jackson was placed on the DL. On May 15, Garcia hit his first major league home run. In June, García was optioned to the Triple-AToledo Mud Hens when Jackson came off the DL, but was recalled four days later when Aníbal Sánchez was placed on the DL. On July 7, 2013, during a game for the Triple-A Toledo Mud Hens, García hit for the cycle in a 9–7 victory over the Indianapolis Indians. This marked the first cycle for a Mud Hen since Ryan Raburn on May 27, 2007. In 2013 with the Tigers he batted.241/.273/.373.
Chicago White Sox
2013–2014
On July 30, 2013, García was traded to the Chicago White Sox in a three-team trade that sent Jake Peavy and Brayan Villarreal to the Boston Red Sox, José Iglesias to the Detroit Tigers, and Frankie Montas to the White Sox. Garcia initially reported to the White Sox Triple-A affiliate, the Charlotte Knights. Between Charlotte and Toledo, he led the International League in batting average with a.374 mark. When the White Sox traded Alex Ríos on August 9, they promoted García to the major leagues. He started his first game with the White Sox on August 10, and collected his first hit with the team in the sixth inning. García came out of a game against the Colorado Rockies on April 9, 2014 after he jammed his left shoulder after attempting a diving catch in right field. The next day, an MRI revealed that his left shoulder had a torn labrum. He was placed on the 60-day disabled list and was presumably ruled out for the 2014 season. However, García successfully recovered and was activated from the DL on August 16. Limited to only 46 games in 2014, García batted.244/.305/.413 with 7 home runs and 29 RBI.
2015–2018
In 148 games in 2015, García hit.257/.309/.365 with 13 home runs and 59 RBIs. García played in only 120 games in 2016 due to injury, hitting.245/.307/.385 with 12 home runs and 51 RBIs. On December 3, García and the White Sox avoided salary arbitration by agreeing to a one-year, $3 million contract for the 2017 season. In 2017, García set career highs in average, runs, home runs and RBIs. Garcia was named to his first-ever all star game. For the season, he had the highest batting average on balls in play of all major league players, and swung at 59.0% of all pitches he saw, tops in the major leagues. He also led all MLB hitters in batting average against left-handers, at.424. García was placed on the disabled list for the second time in the season on July 10 with a hamstring injury, limiting him to just 35 games played in the first half of the season. For the season he batted.236/.281/.438 with 19 home runs.