The Diamondbacks traded Cahill for minor league outfielder Josh Elander and agreed to send Atlanta $6.8 million to cover the majority of Cahill's $12 million salary this year.
The 27-year-old right-hander, an All-Star with Oakland in 2010, was 3-12 with a 5.61 ERA for Arizona last season. He is 64-69 with a 4.07 ERA in six seasons.
Only Opening Day starter Julio Teheran, newcomer Shelby Miller and Alex Wood are guaranteed spots in the Braves' rotation. Mike Minor, who went 6-12 with a 4.77 ERA in 25 starts last season, is out indefinitely with a sore shoulder.
With the trade, 22-year-old right-hander Archie Bradley could get a spot in Arizona's rotation. Bradley was 3-7 with a 4.45 ERA in 18 minor league starts last year but has a 1.61 ERA in six spring training appearances, including four starts.
"He has pitched well enough to earn a spot in our rotation, and we'll revisit it if we make a change," Diamondbacks manager Chip Hale said Thursday.
Braves assistant general manager John Coppolella said the Braves had their eyes on Cahill all spring.
"We thought he was a young pitcher with good stuff," Coppolella said. "We saw him four different times this spring and liked what we saw."
Cahill has suffered from shoulder stiffness, but Coppolella said it was "just minor wear and tear."
"There are no red flags," Coppolella said. "He's going to give us a good shot to get us where we want to be."
To help cover Cahill's salary, Arizona will pay Atlanta seven installments of $812,500 by the first of each month from May 1 through Nov. 1 and then $1,112,500 by Dec. 1.
Cahill's contract includes a $13 million team option for 2016 with a $300,000 buyout and a $13.5 million option for 2017 with a $500,000 buyout.
The 24-year-old Elander is a .275 hitter in three seasons in the minors. He batted .219 with two homers last year at Class A Lynchburg.