The Jays said on Monday (local time) that the 35-year-old agreed to a one-year deal worth $1.75 million, with a club option for 2019 worth $2.5 million that goes into effect if he meets performance incentive thresholds.
Earlier in the day, Oh's Seoul-based agency, Sports Intelligence Group, said Oh had signed with the Jays and passed his physical in Florida.
Oh had a deal fall through with the Texas Rangers earlier this month over what US reports said were "concerning issues" with his right elbow.
"I am pleased to have signed with Toronto, and the club respected my career and showed that they really wanted me during our negotiations," Oh said in a statement through his agency. "I can't wait to join the club right away and try to do the best I can to help the club."
After 11 seasons in South Korea and Japan, Oh pitched the last two years with the St. Louis Cardinals.
In 2016, he went 6-3 with 19 saves and a 1.92 ERA in 79 2/3 innings while recording 103 strikeouts against just 18 walks. He took over as the closer mid-season.
But Oh struggled last year, going 1-6 with 20 saves and a 4.10 ERA in 59 1/3 innings. He only struck out 54 batters while walking 15 as his opponents started making more contact.
The Blue Jays have an All-Star closer in Roberto Osuna, who has 95 saves over the past three years, and Oh is expected to help bridge the gap to the young right-hander.
Oh joins Ryan Tepera, Danny Barnes and Aaron Loup in a Jays bullpen that ranked eighth in the American League with a 4.21 ERA in 2017.
Oh is actually the second South Korean to sign with the Blue Jays but will become the first to actually play for them.
In September 1981, right-hander Choi Dong-won signed a five-year deal with the Jays but never pitched for them due to a situation regarding his mandatory military service. The South Korean government offered to waive his duty only if Choi stayed in the country, and the pitcher stayed home and became a star in South Korea.
The Jays threatened to launch legal proceedings over Choi's breach of his contract but never got Choi to pitch for them. (Yonhap)