The 28-year-old England player has made 113 appearances since arriving at the Rec from Gloucester in 2011.
Attwood has won 20 caps, but was not included in Stuart Lancaster's squad for the recent World Cup.
"I feel like this club has massive ambitions and is one of the few clubs in Europe that has the components in place to achieve them," he said.
"Right now in my career I want silverware, and my belief in this team's ability to secure some was a prime reason why I wanted to stay put."
Attwood has started four of Bath's five matches this season, including the 19-16 Champions Cup victory over Leinster on Saturday.
Bath head coach Mike Ford said: "He was desperately unlucky not to make the World Cup with England.
"But we believe he's in the best place here at Bath to push on for further international honours, in addition to taking this team forward."
Bath second row Dave Attwood has signed a new three-year contract with the Premiership club.