Preheat the oven to 325°F and set a rack in the lower middle position.
Pat the beef dry and season with the salt and pepper.
In a large Dutch oven or heavy soup pot, heat vegetable oil over medium-high heat until hot and shimmering.
Brown the meat in 3 batches, turning with tongs, for about 5 minutes per batch; add more oil as needed for each batch.
Transfer the meat to a large plate and set aside.
Add the onions and garlic; cook, stirring with a wooden spoon and scraping the brown bits from bottom of the pan, for about 5 minutes.
Add the tomato paste and cook for a minute more.
Add the chili powder, cumin and salt; stir for about 1 minute
Add the beef with its juices back to the pan and sprinkle with the flour.
Stir with wooden spoon until the flour is dissolved, 1 to 2 minutes.
Add the diced tomatoes and beef broth.
Stir with a wooden spoon to loosen any brown bits from the bottom of the pan and bring to a boil.
Cover the pot with a lid, transfer to the preheated oven
Braise for 2 hours.
Add the beans to the pan.
Cover and place back in oven for about an hour more, or until the meat is tender.
Taste and adjust seasoning, if necessary.