Chas McCormick also homered, Yuli Gurriel had three hits and Alex Bregman scored twice as Houston won for the sixth time in eight games.
The Blue Jays went 3-2 to open their residency at the home of their Triple-A affiliate. Toronto was 10-11 while hosting home games at its spring training site in Dunedin, Florida, to begin the year.
Garcia (5-3). battling a cold which limited him to 79 pitches, allowed one run and three hits in six innings. The left-hander struck out eight, raising his season total to 68 to tie for the lead among American League rookies with Detroit's Tarik Skubal.
"He didn't have his best stuff," Astros manager Dusty Baker said. "He made the pitches when he had to. He gave us all that we needed and all that we wanted."
Riding a five-game winning streak, Garcia appears to have met Baker's expectations over the first half of the season.
"You never know what a young man is going to do," Baker said. "In spring training, I said I'm always rooting for a surprise player, especially a surprise rookie. Once the young man feels that he belongs here and starts feeling comfortable, he can be himself and rise to the occasion if he has the ability, which we feel he does."
Gurriel, meanwhile, is more surprised by Garcia's success.
"What he's been doing this year has been surprising to see," Gurriel said through an interpreter. "Just how effective he's been, and you can see he's a guy with a lot of capabilities and is ready to do some really great things."
Ryan Pressly worked the ninth inning to earn his ninth save.
Altuve sent a drive just inside the left-field foul pole for his 19th career leadoff homer. McCormick opened the second with his fifth homer and Kyle Tucker had a two-run single in the third off Steven Matz (6-3).
Altuve also made back-to-back sharp plays to stop Toronto in the third. The All-Star second baseman fielded a grounder by Marcus Semien and threw out Danny Jansen at third - Jansen did not return to the game after straining his right hamstring on the play.
Blue Jays manager Charlie Montoyo said that Jansen was undergoing tests after the game, with more slated for Monday.
The next batter, Bo Bichette, hit a hard grounder to Altuve's left that he stopped with a dive, then got the out at first.
Matz allowed eight hits and four walks over 4 1/3 innings.
"He had to battle every inning," Montoyo said. "He gave up four (runs), but it could have been worse. He made big pitches to keep us in the game. It seems like four runs was a lot, the way (Garcia) was pitching."
Teoscar Hernández had an RBI grounder and Randal Grichuk singled home a run for the Blue Jays.
STRANGE THING, THIS GRASS
Houston's Yordan Alvarez played in left field, only his second start of the season on defense. Both have come in the last five days. He has been Houston's designated hitter in 42 of the team's 59 games.
Astros: INF/OF Aledmys Díaz fractured his left hand when hit by a fastball on Saturday and will be sidelined for six to eight weeks. Baker said Díaz would see a hand specialist this week. The team's plan is to activate OF Michael Brantley (hamstring) for Tuesday's game at Boston. Houston played a man short on Sunday.
Blue Jays: Atkins said LHP Ryan Borucki (forearm flexor) has taken the next step in his progression and has had "a positive few days." ... 3B-OF Cavan Biggio (sprained spine ligament) and RHP Thomas Hatch (elbow) were both slated to make rehab appearances Sunday for Triple-A Buffalo in its game against Syracuse in Trenton. ... Atkins described the progress of OF George Springer (quad strain) as "extremely encouraging" but did not have a timeframe for a return. ... RHP Julian Merryweather (oblique) has started a throwing routine.
Both teams have Monday off. Houston will travel to Boston and start a three-game series on Tuesday with LHP Framber Valdez (1-0, 1.64 ERA) taking on Boston's LHP Martín Pérez (4-2, 3.09).
Toronto goes to Chicago for a three-game set against the White Sox, with LHP Robbie Ray (3-2, 3.57) facing LHP Carlos Rodón (5-2, 1.98) in Tuesday's opener.
Altuve, McCormick homer as Astros top Blue Jays
Jose Altuve hits a leadoff home run and Chas McCormick later hits his fifth dinger of the season as the Astros defeat the Blue Jays.