Ingredients
Vegetables and Aromatics
- 2 tablespoons extra virgin olive oil
- 2 tablespoons unsalted butter
- 1 cup (160g) small dice yellow onion (about ½ medium yellow onion)
- Kosher salt (to taste)
- 1 cup (120g) small dice celery (about 2 large celery stalks)
- 1 cup (140g) small dice carrot (about 2 medium carrots)
- 3 large garlic cloves (finely chopped)
- ¼ teaspoon dried red pepper flakes (optional)
Meat and Dairy
- 1 lb (16 oz) ground beef (preferably 80% lean/20% fat, minimum 15% fat)
- Freshly ground black pepper (to taste)
- 1 cup (240 mL) whole milk
- ¼ teaspoon freshly grated nutmeg
Liquids and Tomatoes
- 1 cup (240 mL) dry white wine (Pinot Grigio or Sauvignon Blanc)
- 1 (28-ounce) can whole or crushed Italian plum tomatoes in their juices
- 2-3 Parmigiano-Reggiano rinds
Instructions
- Prepare the base: Heat a large (about 5-Quart) heavy-bottomed Dutch oven or pot over medium-low heat. Add olive oil and butter. Once butter melts, add diced onions and ½ teaspoon kosher salt (adjust based on salt brand). Sauté until onions are softened and nearly translucent, about 5 to 7 minutes. Add diced celery, carrots, and a pinch of salt; cook 2 to 3 more minutes, stirring often. Add chopped garlic and optional red pepper flakes; cook stirring constantly for about 1 minute until fragrant.
- Cook the meat: Add ground beef along with a generous pinch of kosher salt and freshly ground black pepper. Cook over medium heat, breaking the meat apart with a fork, until almost fully cooked and no longer raw, about 3 to 5 minutes.
- Incorporate milk and seasonings: Pour in whole milk and simmer gently over low heat, stirring frequently, until the milk is mostly evaporated, about 5 to 7 minutes. Stir in freshly grated nutmeg.
- Add wine and tomatoes: Add dry white wine and continue simmering until the wine has mostly evaporated, about 3 to 5 minutes. Stir in canned tomatoes with juices and Parmigiano-Reggiano rinds. Bring sauce to a gentle boil, then immediately reduce heat to a very low simmer — the surface should show only a few small bubbles.
- Simmer the sauce: Let sauce simmer uncovered for at least 3 to 4 hours, stirring occasionally. Add splashes of water if the sauce becomes too thick. Season with salt and pepper to taste. Remove and discard Parmesan rinds before serving. The simmering can be paused and resumed later or transferred to a slow cooker or Instant Pot on low “slow cook” mode for convenience.
- Serve: Toss sauce with freshly boiled pasta, ideally finishing the al dente pasta by cooking it in the warm sauce to meld flavors. Serve with freshly grated Parmigiano-Reggiano cheese on the side.
- Enjoy and share: If you enjoyed this recipe, please leave a review and rating to share your experience!
Notes
- If you use a different brand of kosher salt, adjust the quantity accordingly as saltiness varies.
- The long simmer time develops rich flavors but can be broken into stages throughout the day.
- Parmigiano-Reggiano rinds add umami depth but should be removed before serving.
- Finishing pasta in the sauce intensifies the flavor and improves texture.
- This sauce can be made ahead and stores well refrigerated or frozen.
- You can substitute canned crushed or whole tomatoes depending on desired texture, crushing whole tomatoes by hand for a chunkier sauce.
- Prep Time: 20 minutes
- Cook Time: 3 hours 55 minutes
- Category: Main Course
- Method: Stovetop
- Cuisine: Italian