Terms of the deal weren't released but MLB.com reported it was worth $5 million with incentives that could pay him as much as $13 million.
Napoli was originally set to sign a three-year contract for $39 million with Boston in early December, but the transaction was delayed and then revised after a physical examination revealed he has a hip condition known as avascular necrosis.
Napoli belted 24 homers and drove in 56 RBI over 108 games last season for the Texas Rangers, earning his first All-Star Game selection, but managed just a .227 batting average.
The 31-year-old has compiled a .259 average with 146 homers and 380 RBI over 727 career games with the Los Angeles Angels and Texas.
LGBT community has 'bullied the American people': Bachmann
Duggar sisters unveil Christian dating rules in new book