Sweat the onion. Warm the oil in a heavy 6 quart pot over medium high heat and cook the onion for 3 minutes until translucent. Crumble the beef. Add the beef and cook for 5 to 6 minutes, breaking it up, until browned and cooked to 160 degrees F. Pour off excess fat.
Toast the spices. Add the garlic for 30 seconds, then the chili powder, cumin, sugar, oregano, salt, pepper, and tomato paste. Stir for 1 minute.
Add tomatoes, broth, and beans. Pour in the broth, scraping the pot bottom, then add the tomatoes and both cans of beans.
Cover and simmer. Bring to a bubble, reduce to low, cover, and cook for 30 minutes, stirring a few times.
Reduce. Uncover and cook 30 minutes more until thick enough to leave a trail on the bottom of the pot.
Rest and serve. Let the chili sit off the heat for 5 minutes, adjust the seasoning, and top each bowl as you like.