Heat olive oil until it shimmers in a stock pot or 4-5 quart saucepan. Sauté onion until tender.
Mix in ground beef and garlic and cook until meat is browned.
Stir in tomato sauce, water, diced tomatoes, vinegar, chili powder, cinnamon, paprika, allspice, light brown sugar, cocoa, and hot sauce (optional).
Turn the heat to high until the chili is boiling, then reduce to low, cover, and simmer for 15-20 minutes until the sauce thickens.
Stir in the beans then taste and season with salt if needed.
Spoon into bowls and sprinkle with cheese (optional)