In a large pot or Dutch oven, heat the olive oil over medium heat. Add the diced onion and cook until translucent, about 3-4 minutes.
Add the minced garlic and ground beef to the pot. Cook until the beef is browned, breaking it apart with a spoon, about 5-7 minutes. Drain excess fat if necessary.
Stir in the diced tomatoes (with juice), beef broth, Italian seasoning, salt, and black pepper. Bring the mixture to a boil.
Add the spaghetti to the pot, ensuring it is submerged in the liquid. Reduce heat to a simmer, cover, and cook for 10-12 minutes, stirring occasionally, until the pasta is al dente.
Once the spaghetti is cooked, stir in the heavy cream and grated Parmesan cheese. Cook for an additional 2-3 minutes until the sauce is creamy and heated through.
Remove from heat and let it sit for a few minutes to thicken. Serve hot, garnished with fresh basil if desired.