Weaver, 29, was designated for assignment by the Angels last Friday after going 6-10 with a 6.29 ERA in 16 starts this season. He signed a one-year, $8.3 million contract with Los Angeles as a free agent during the offseason.
Los Angeles general manager Bill Stoneman said the Cardinals will assume Weaver's contract, but the Angels will give St. Louis an undisclosed amount of cash in the deal.
Weaver's tenure with the Angels ended in strange fashion last Friday as the club called up his 23-year-old brother, Jered, from Triple-A Salt Lake to replace him in the rotation and on the roster. The rookie right-hander is 5-0 in his first five starts for Los Angeles, including a 7-1 victory over the Mariners on Monday night.
Jeff Weaver went 14-11 with the Los Angeles Dodgers last season, his second with the club. St. Louis will be his fifth major-league team following earlier stints with Detroit and the New York Yankees.
He has a career record of 81-97 with an ERA of 4.55 in 225 starts.
"We feel that Weaver is someone who can come in and lend immediate help and depth to our rotation," Cardinals general manager Walt Jocketty said after St. Louis' 14-4 loss at Atlanta.
Weaver allowed 114 hits, including 18 homers, and walked 21 and struck out 62 in 88 2/3 innings this season with the Angels. Opponents had a .309 average against him.
"I did expect to be able to trade him. I didn't know we'd get a guy as much as we like Evans," Stoneman said during Los Angeles' game against the Seattle Mariners.
Evans, 24, was hitting .311 with seven homers and 20 RBI in 21 games with Double-A Springfield. He began this season with Class A Palm Beach, hitting .307 with 15 homers and 45 RBI in 60 games.
Evans was drafted in the 47th round by St. Louis in 2001. He will be sent to Double-A Arkansas of the Texas League and will be tried out in center field.
Stoneman said one team offered major-league talent for Weaver, but the Angels wanted a top prospect. They think they got one in Evans.
"You look at the numbers," Stoneman said, "he's hit a lot of home runs."