Heat olive oil in a large pot or Dutch oven over medium heat. Add the chopped onion, carrot, and celery. Cook until softened, about 8-10 minutes.
Add the minced garlic and cook for another minute until fragrant.
Add the ground beef to the pot and cook, breaking it up with a spoon, until browned. Drain off any excess grease.
Stir in the crushed tomatoes, tomato paste, beef broth, and red wine. Add the oregano, basil, red pepper flakes (if using), salt, and pepper. Bring to a simmer.
Reduce the heat to low, cover, and simmer for at least 1 hour, or up to 2 hours, stirring occasionally. The longer it simmers, the richer the flavor.
Serve hot over your favorite pasta.
Notes
This sauce freezes well. For an extra rich flavor, you can add a splash of milk or cream at the end of cooking.