The 32-year-old Argentina international, who has won two Premier League titles during his time with the Citizens, has agreed a two-year deal to move to London Stadium.
“This is an absolute pleasure to be part of West Ham United Football Club,” Zabaleta told whufc.com. "I come to the Club to enjoy myself and hopefully we can have a very successful time.”
Zabaleta becomes West Ham's first summer signing and will wear the No 5 shirt.
View: West Ham's new kit