In a large skillet or saucepan, heat the olive oil over medium heat. Add the diced onion, carrot, and celery. Sauté for about 5 minutes until the vegetables are softened.
Add the minced garlic and cook for an additional minute until fragrant.
Increase the heat to medium-high and add the ground beef. Cook until browned, breaking it apart with a spoon, about 5-7 minutes. Drain excess fat if necessary.
Stir in the crushed tomatoes, tomato paste, oregano, basil, salt, black pepper, and red pepper flakes (if using).
Pour in the beef broth and bring the mixture to a simmer. Reduce the heat to low and let it simmer uncovered for about 30 minutes, stirring occasionally.
Stir in the whole milk and simmer for another 10 minutes to thicken the sauce.
Meanwhile, cook the spaghetti according to package instructions in a large pot of salted boiling water. Drain and set aside.
Serve the Bolognese sauce over the cooked spaghetti. Garnish with fresh basil or parsley and sprinkle with grated Parmesan cheese if desired.