Heat butter or olive oil in a large pot or Dutch oven over medium heat.
Add diced onion to the pot, and sauté until tender.
Add ground beef to pot and brown, breaking up any large chunks.
Add minced garlic and cook until fragrant.
Turn heat down to low, and add cumin, chili powder, chipotle powder, smoked paprika, red pepper flakes, salt, and pepper.
Add the tomato paste, beans, tomatoes, and beef broth. Stir to combine all ingredients.
Simmer chili on medium-low heat for 20-25 minutes, stirring occasionally to prevent sticking. If the chili starts to get too thick, add 1/2 cup of water to loosen.