After all, for about five seconds Tuesday night, he thought he had one.
Alas, his bid for an eighth-inning triple wound up in the glove of San Francisco Giants right fielder Marlon Byrd, leaving Castro with a single, a double and a home run in the Cubs' 8-5 win in the opener of a three-game series between playoff contenders.
Left fielder Kyle Schwarber and catcher Miguel Montero also homered, and right-hander Jake Arrieta became the majors' first 16-game winner as the Cubs kicked off a six-game Western swing with a sixth consecutive win.
"Starlin probably had his best game of the year," Cubs manager Joe Maddon said after his club improved its best-in-baseball road record to 34-25. "Starlin, what he did today, potentially that's a nice sign for us."
Chicago (73-51) picked up a game on the Pittsburgh Pirates (75-49), who lost at Miami, in the race for the first wild-card position in the National League. The Cubs trail the Pirates by two games.
They did it by building a 6-0 lead through four innings against Giants starter Matt Cain, then surviving a bit of a frantic finish after Arrieta was long gone.
"Never a dull moment," Maddon said after sweating out a four-run Giants eighth inning that got the home team within 8-5. "But we'll take it."
Castro will take three hits any day, although he thought he recorded a fourth -- and the Cubs' first cycle in 22 years -- when he ripped a shot to right-center field in the eighth inning.
However, just after he sped past first base en route to what he thought would be a cycle-completing triple, he pulled up when Byrd made a nice catch running to his right.
"When I hit it, I thought I had a triple," he said. "At night, the ball isn't running very far here."
That surely wasn't the case two innings earlier, when Castro crushed a Yusmeiro Petit pitch halfway up the bleachers in left field for a solo homer, his sixth of the season.
"That was different," Castro said. "I hit that ball pretty good. I hit the other one pretty good, too."
Returning home after a 2-5 road trip, the Giants (66-59) lost for just the third time in their past 16 home games to fall 2 1/2 games behind the NL West-leading Los Angeles Dodgers (68-56), who won at Cincinnati.
"Our goal needs to be to win the division," Giants manager Bruce Bochy said after watching his club fall 7 1/2 games behind the Cubs in the race for the second wild-card spot. "The other teams (in the wild-card race) might stumble, but our focus needs to be on the division."
Things got away from Cain and the Giants early.
Schwarber belted a three-run shot, his 12th of the season, in the third inning, and Montero hit a two-run blast, his 14th, in the fourth as the Cubs teed off on Cain (2-4) and kept him winless in five starts this month.
That made for a comfortable night for Arrieta (16-6), who breezed through six-plus innings en route to his 13th consecutive quality start. He allowed just an unearned run on four hits and one walk. He struck out eight.
Arrieta left with an 8-1 lead one batter into the seventh inning.
"When we get three runs in the (third) inning, I feel good about my chances of winning that game," said Arrieta, who recorded his 10th road win of the season. "And when we add on three more, I just say, 'Let's go get that win.'"
Arrieta also had a 2-0 win over the Giants earlier this month when the Cubs swept a four-game series.
Still down by seven runs entering the eighth inning, the Giants rallied for four runs against the Chicago bullpen. Backup catcher Andrew Susac's two-out, three-run double highlighted the comeback attempt.
Right-hander Pedro Strop recorded the final out of the eighth with Susac on second base, and closer Hector Rondon worked a one-hit ninth for his 24th save.
Third baseman Matt Duffy had two of the Giants' nine hits.
Cain was pulled after allowing six runs and eight hits in five innings. He walked two and struck out three. He has allowed 11 home runs in his 11 starts this season.
"You can't get stuck on what the result is," Cain said. "Just keep pitching and keep throwing. Use the bullpens in between (starts). Build on the little things."
The veteran failed to reach the sixth inning in four of his five starts in August, and he allowed four or more runs for the fifth time in his past six outings.
NOTES: The last Cub to hit for the cycle was 1B Mark Grace in 1991. ... LF Kyle Schwarber is the first Cubs player since 1900 to hit 12 home runs in his first 42 games. ... Cubs RHP Jake Arrieta improved his ERA in August to a major-league-best 0.54 in five starts. ... Chicago 2B Addison Russell caught a late flight to San Francisco following the birth of his son and arrived at the stadium just in time to see the final out of the game. ... The Cubs announced the signings of OF Quintin Berry and INF Emilio Bonifacio to minor league deals before the game. Both were assigned to Triple-A Iowa. ... Giants LHP Jeremy Affeldt went on the disabled list after he tore a patellar ligament in his left knee while enjoying a day off with his family Monday. No surgery is scheduled. San Francisco recalled RHP Mike Broadway from Triple-A Sacramento to fill the roster vacancy, and he threw a scoreless inning Tuesday.