Beeson defeated Allen Sells in a runoff Tuesday night with 52.% of the vote.
Turnout was slightly lower than the general election last month. In the general election, 34,592 residents voted. On Tuesday, 33,805 residents voted.
Zapata was on a medical leave of absence from the post for several months before his wife — who has power of attorney over him — resigned on his behalf in June.
The city council seat will be up for election again next year.