In a large pot, heat the olive oil over medium heat. Add 1 cup of the chopped onions, and sauté until translucent and slightly browned, 3-4 minutes. Add garlic, and cook, stirring constantly for a minute or so.
Add beef, and cook, breaking into small pieces, until it is no longer pink, 6-7 minutes. Drain excess grease.
In a blender or food processor, blend remaining 1 cup onion and the red pepper until smooth. Pour the mixture into the pot with the beef and onions.
Add the tomato paste, salt, pepper, oregano, basil and thyme, and cook for 1 minute, stirring until combined.
Add diced tomatoes, crushed tomatoes, mushrooms (if using), beef broth, and sugar. Stir until combined before adding the bay leaves.
Bring the sauce to a boil, and then reduce to low and simmer for 1 hour, stirring occasionally. Stir in the balsamic vinegar and let the sauce rest for 10-15 minutes (for the flavor to absorb) before serving.