Place beans in a large Dutch oven and cover with 2-quarts of water for 8-hours or overnight.
Meanwhile, to prepare the ham broth, place ham bone in large stock pot covered with 3 quarts of water. Bring to a boil then gently simmer for 2-3 hours, skimming foam periodically. Remove ham bone, reserve any ham pieces and chill broth. Once chilled skim off an fat.
Drain beans, cover with ham broth and simmer for 2 1/2 hours.
Add remaining ingredients including any reserved ham. Simmer for an additional 20-30 minutes or until onion and beans are tender.
Delicious served with cornbread.