The Astros had runners on first and third in the ninth against Shawn Camp, but back-to-back strikeouts by Jonathan Singleton and J.D. Martinez ended the inning.
Alfonso Soriano grounded into an inning-ending double play in the 10th as the Cubs threatened with runners on first and second.
Marwin Gonzalez smacked a three-run homer and Chris Carter went 2-for-2 with two RBIs for the Astros.
Cubs starter Edwin Jackson struck out nine in only four innings, but gave up five runs in the first two innings, including the homer to Gonzalez, Houston's No. 9 hitter. Jackson also walked one and hit a batter.
The good news for the Astros is that they may have found their much-needed middle-of-the-order hitter in Carter, obtained in a trade with Oakland. He delivered two doubles, drove in two runs and also walked in three plate appearances. Carter has 15 RBIs this spring.
The teams will meet again in their final exhibition game on Saturday afternoon at 1:05 p.m. CT.
While Astros manager Bo Porter played his starters in only half of the game on Friday, Cubs skipper Dale Sveum went most of the way with many of his regulars.
The Cubs scored three runs in the top of the first off of Astros starter Alex White, expected to be the long man out of the Houston bullpen. David DeJesus and Starlin Castro opened with singles and, after a walk to Anthony Rizzo, Soriano drove in one with a sacrifice fly. Welington Castillo drove in two more with a double.
The Astros answered with a pair of runs in the bottom of the first on Carter's two-run double.
Navarro gave the Cubs a 4-2 lead in the second with a line shot into the seats in left field off left-hander Kevin Chapman.
The Astros took the lead at 5-4 in the second on the homer by Gonzalez, his second of the spring. After the Gonzalez homer, Jackson struck out the side.
Soriano singled in Castro in the fifth inning to tie the game and Luis Valbuena tripled in the sixth, scoring on Barney's single for a 6-5 Cubs lead.
The only meetings in the regular season between the Cubs and Astros will be a three-game series in June at Wrigley Field.
Up next for the Cubs: The Cubs play their final spring game on Saturday afternoon at 1:05 p.m. CT against the Astros at Minute Maid Park. Left-hander Travis Wood, who is 3-1 with a 4.50 ERA this spring, is scheduled to start for the Cubs. Starlin Castro, whose girlfriend gave birth to a son, Starlin, on Thursday, rejoined the team for Friday's exhibition. The Cubs open the regular season on Monday afternoon in Pittsburgh.