Castillo kept the Blue Jays off the scoreboard for four innings.
But the Blue Jays put two on the board in the fifth when Castillo gave up three straight one-out hits.
Bradley Zimmer came into the game with three hits in his 40 at bats this season, but he doubled past new Reds third baseman Taylor Motter.
Motter was called up from Class AAA Louisville just before the game and was wearing uniform No. 94, a baseball oddity.
George Springer singled home Zimmer and Bo Bichette doubled home Springer for a 2-0 Toronto lead.
The Reds, facing left-handed Korean-born Hyun Jim Ryu, doubled in five straight innings, from the second through the sixth, but none scored.
Through six innings the Red were 0 for 8 with runners in scoring position. Kyle Farmer (2nd), Matt Reynolds (3rd), Farmer again (4th), T.J. Friedl (5th) and Joey Votto (6th) all doubled, but none scored.
Ryu was lifted after six, as was Castillo, and the Reds broke through against Blue Jays relief pitchers Ryan Borucki and Adam Cimber.
Mike Moustakas was hit by a pitch and Motter blooped a single to right center. Cimber replaced Borucki and Reynolds singled for a run.
The Reds had runners on second and third, but Tyler Stephenson struck out.
Joey Votto returned to the roster off the injured list and received a polite ovation from his hometown Toronto fans.
But it was nothing like the ovation Toronto closer Jordan Romano received when he walked to the mound for the ninth.
The Blue Jays’ Romano, also a Toronto native, pitched a 1-2-3 ninth to close it out — a ground ball from Moustakas, a ground ball from Motter and a game-ending fly ball from Tyler Naquin.
The Reds put four players on the restricted list— Brandon Drury and Albert Almora Jr., Tyler Mahle and Joel Kuhnel – prior to the series in Toronto.
To enter the country, the Canadian government requires a person to have received a second COVID-19 vaccine dose -- or one dose of Johnson & Johnson -- at least 14 days before entry.
Players who go on the restricted list because they are not vaccinated against COVID-19 are not paid and do not accrue major league service time.
(The Associated Press contributed).