Uggla receives a $1 milllion signing bonus, $9 million this year and $13 million in each of the following four seasons.
The 30-year-old was acquired from Florida in November for infielder Omar Infante and left-hander Mike Dunn. The two-time All-Star turned down a $24 million, three-year offer from the Marlins last summer.
Uggla batted .287 with 33 homers and 105 RBIs last season, when he made $7.8 million. Without the new deal, he would have become a free agent after the 2011 World Series.
He has averaged 31 homers, 100 runs scored and 93 RBIs over his five-year career.
By Douglas Holtz-Eakin
The young drop coverage to avoid higher premiums
Independent voices from the TWT Communities
Consummate traveler Todd DeFeo explores the unique stories that make destinations worth going to.
Looking at pop culture, politics and social issues.
Political commentary and literary criticism in an era of eroding liberty
Benghazi: The anatomy of a scandal
Vietnam Memorial adds four names
Cinco de Mayo on the Mall
NRA kicks off annual convention
California wildfires wreak havoc