Season the beef with salt and pepper. In a large soup pot, or a Dutch oven, heat the oil over medium high heat. Add the beef in batches, and brown a few sides, about 8 minutes per batch (not every side has to be browned, better to caramelize a few sides well and let the rest just be). Transfer the meat with a slotted spoon to a plate as it finishes browning.
Drain off all but a couple of teaspoons of the fat from the pot, and add the onions and sauté over medium heat for 5 minutes, until the onions are tender. Add the garlic and sauté for one more minute, until you can smell the garlic. . Add the chili powder then stir in the tomato puree and the beef broth, return the browned beef cubes to the pot, and bring to a simmer over medium high heat.
Reduce the heat and simmer, partially covered for about 3 hours, until the beef is very tender. Add 1/2 to 1 cup of water towards the end of the sauce is too thick or the mixture looks too dry. When it is all tender, you can remove a cup of two of the beef cubes and shred them with two forks and then stir that back into the pot to add thicken up the sauce a bit, if desired.
Serve hot in bowls, with the accompaniments of your choice.