Heat the oil in a large saucepan until it’s shimmering.
Add the onion and cook, stirring, over medium low until tender and lightly browned.
Add the beef and cook, crumbling, until it’s no longer pink.
Stir in the garlic and cook for an additional minute.
Stir in the tomato paste to coat.
Add the crushed tomatoes, beef stock (or water), salt, pepper, and Italian seasoning, and continue to simmer for 8-10 minutes to develop the flavors and heat through.
Stir in optional heavy cream if using.
Serve hot over cooked pasta, garnishing with fresh basil and shaved Parmesan if desired.