The $5 million contract signed Tuesday includes possible bonuses that could raise its total value to $13 million.
Napoli, a catcher-first baseman, originally agreed to a $39 million, three-year contract at last month's winter meetings, subject to a successful physical. But that wasn't finalized after the team became concerned about the condition of his hip.
Napoli spent the past two seasons with the Texas Rangers after playing his first five for the Los Angeles Angels. He batted .227 last year with 24 homers and 56 RBI and was chosen for his first All-Star game.
The Red Sox also designated right-hander Chris Carpenter for assignment.