In a large pot or Dutch oven, heat the olive oil over medium-high heat. Add the beef cubes in batches and brown on all sides. Remove the beef and set aside.
In the same pot, add the chopped onion and cook until softened, about 5 minutes. Stir in the minced garlic and cook for another minute until fragrant.
Return the browned beef to the pot. Add the beef broth, diced tomatoes, red wine, red wine vinegar, tomato paste, oregano, cinnamon, allspice, bay leaf, salt, and pepper. Stir well to combine.
Bring the mixture to a boil, then reduce the heat to low. Cover and simmer for about 1.5 to 2 hours, or until the beef is tender.
In the last 30 minutes of cooking, add the pearl onions and olives (if using) to the pot. Stir occasionally and adjust seasoning as needed.
Once the beef is tender and the sauce has thickened, remove the bay leaf. Serve hot, garnished with fresh parsley.