A wide bowl of tagliatelle topped with thick, glossy classic bolognese sauce, finished with freshly grated Parmesan and a crack of black pepper on a wooden table

Bolognese Sauce Recipe: Slow-Cooked, Rich, Worth Every Minute

Quick Answer

Bolognese sauce is made by browning a mixture of ground beef and pork with soffritto, then simmering slowly with tomatoes, wine, and milk for at least 2 hours until the sauce is thick and deeply flavored. The long cook time is not optional —? it's the entire point.

First apartment. First dinner party. I decided to make bolognese because it sounded like the kind of thing a person with their life together makes. I had watched a cooking video about it. I felt ready. I also had about ninety minutes before the guests arrived, which was not enough time for bolognese and I knew this but decided to be optimistic about it anyway.

The result was ground beef in tomato sauce with pasta. Completely edible. Not what anyone would describe as bolognese. My friend Marcus, who had grown up in an Italian household, said "this is good" in the voice you use when something is fine but you don't want to make it worse by commenting further. I thanked him and changed the subject.

The actual sauce requires the soffritto to go soft before the meat goes in, the meat to brown properly before anything wet touches it, the wine and milk to reduce almost completely at separate stages, and then two to three hours of low simmering before the sauce looks and tastes like anything. The time is doing the work. The heat converts everything into something that tastes like it was built rather than assembled.

I made a proper batch the following Sunday. No guests. Just me and three hours and a podcast. The sauce that came out did not taste like tomato sauce with ambition. It tasted like bolognese. Marcus has not been back for dinner, but the point is I know now.

Prep20 minutes
Cook2 hours 30 minutes
Total2 hours 50 minutes
Serves6 servings
DifficultyMedium

Ingredients

  • 2 tablespoons olive oil
  • 2 tablespoons unsalted butter
  • 1 medium yellow onion, finely diced
  • 2 medium carrots, finely diced
  • 2 stalks celery, finely diced
  • 4 cloves garlic, minced
  • 3/4 lb (340g) ground beef (80/20)
  • 3/4 lb (340g) ground pork
  • 1 teaspoon kosher salt, plus more to taste
  • 1/2 teaspoon black pepper
  • 1/4 teaspoon freshly grated nutmeg
  • 3/4 cup dry white wine
  • 3/4 cup whole milk
  • 1 can (28 oz) whole San Marzano tomatoes, crushed by hand
  • 1 cup low-sodium beef broth
  • 2 tablespoons tomato paste
  • 2 bay leaves
  • 1 Parmesan rind (optional but extremely worth it)
  • 1 lb tagliatelle, pappardelle, or rigatoni, for serving
  • Freshly grated Parmesan, for serving

Instructions

  1. 1Heat the olive oil and butter together in a large heavy-bottomed Dutch oven or deep skillet over medium heat. Once the butter has melted and the foam subsides, add the diced onion, carrot, and celery. Cook, stirring occasionally, for 8 to 10 minutes until softened and the onion is translucent. Add the garlic and cook for another 1 minute.
  2. 2Increase the heat to medium-high. Add the ground beef and ground pork in small crumbles. Season with 1 teaspoon kosher salt and 1/2 teaspoon black pepper. Cook, breaking up the meat with a wooden spoon, for 8 to 10 minutes until the meat is browned and most of the liquid has evaporated. Do not rush this step —? properly browned meat makes a significant difference in the final flavor.
  3. 3Add the tomato paste and stir to coat the meat. Cook for 2 minutes, letting it caramelize slightly against the bottom of the pot.
  4. 4Pour in the white wine and stir, scraping up any browned bits from the bottom. Cook over medium-high heat for 3 to 4 minutes until the wine has mostly evaporated.
  5. 5Pour in the whole milk and stir to combine. Add the freshly grated nutmeg. Reduce heat to medium and simmer for 5 to 6 minutes until the milk has absorbed into the meat.
  6. 6Add the crushed San Marzano tomatoes, beef broth, bay leaves, and Parmesan rind if using. Stir everything together and bring to a gentle simmer.
  7. 7Reduce heat to low. The sauce should be at a very low, occasional bubble —? not a rolling simmer. Cook uncovered for 2 to 2.5 hours, stirring every 20 to 30 minutes. If the sauce looks too dry before it's done, add a splash of broth or water. The finished sauce should be thick, glossy, and barely saucy —? it clings to pasta rather than pooling around it.
  8. 8Remove and discard the bay leaves and Parmesan rind. Taste and adjust salt. The sauce is done when it smells like it has been cooking for two and a half hours, which is exactly how long it has been.
  9. 9Cook your pasta in heavily salted boiling water to al dente according to package directions. Reserve 1 cup of pasta water before draining. Add pasta directly to the pot with the bolognese and toss over medium heat for 1 to 2 minutes, adding splashes of pasta water as needed to bring it together.
  10. 10Serve immediately with freshly grated Parmesan.

Pro Tips

  • Cut the soffritto vegetables as small and evenly as you can manage. They should nearly disappear into the sauce by the end —? their job is flavor, not texture. I used a food processor for the first year I made this, which was a great decision I told no one about.
  • The Parmesan rind is not optional in spirit even if it is optional in fact. Drop it in with the tomatoes and pull it out at the end. It adds a low, savory depth that is hard to explain and easy to miss if you skip it.
  • Do not crank the heat to speed up the simmer. A bolognese cooked at medium instead of low will taste like a hurried version of itself, which it will be, and the sauce knows the difference.

Substitutions

ground pork → ground veal or all beef Ground veal makes the sauce silkier. All beef works fine but loses some of the fat complexity. Do not use lean ground turkey and then wonder why it's dry —? that's a different recipe and a different Sunday.
dry white wine → dry red wine or additional beef broth Red wine gives the sauce a deeper, slightly earthier flavor. It's not traditional Bolognese but it's very good. Skip wine entirely and use broth if needed —? just don't skip the deglazing step.
whole milk → heavy cream or full-fat oat milk Heavy cream makes the sauce noticeably richer. Full-fat oat milk works for dairy-free but skip the Parmesan rind too and season with extra salt at the end.
San Marzano tomatoes → any quality whole canned tomatoes San Marzanos are sweeter and less acidic, which matters in a simple sauce like this. If using generic canned tomatoes, taste and add a pinch of sugar if needed.
tagliatelle or pappardelle → rigatoni or penne Wide, flat pasta is traditional because the sauce clings to the surface. Ridged tubular pasta is a respectable second choice. Spaghetti works but is not what this sauce is hoping for.

Storage Instructions

Store leftover bolognese in an airtight container in the refrigerator for up to 4 days. Reheat gently on the stovetop over low heat, adding a splash of water or broth to loosen. Freeze in portions for up to 3 months —? the sauce actually improves after freezing and reheating, which is one of the more satisfying things about making it.

Make Ahead

Bolognese is one of the best make-ahead sauces in existence. Make it up to 3 days in advance and refrigerate —? the flavor deepens significantly overnight. You can also make a double batch and freeze half in zip-lock bags laid flat. Reheat from frozen in a saucepan over low heat with a splash of broth.

Frequently Asked Questions

Why does traditional bolognese use milk?

Milk tenderizes the meat proteins and adds a subtle richness that rounds out the acidity from the tomatoes and wine. It sounds strange if you've never done it, but it's been in the classic Bolognese recipe registered with the Bologna Chamber of Commerce since 1982. Add it after the wine has cooked off, not before, and let it absorb fully before adding the tomatoes.

Can I make bolognese in a slow cooker?

You can, but you must still brown the meat and cook the soffritto on the stovetop first —? that step is not optional. Transfer everything to the slow cooker after adding the tomatoes and cook on low for 6 to 8 hours. The sauce will be slightly looser than stovetop bolognese, so uncover for the last hour to reduce. The flavor is excellent.

Why is my bolognese watery instead of thick?

Two likely causes: the heat was too high and steamed instead of reduced, or the total cook time was too short. Bolognese needs 2 to 3 hours at a very low simmer to drive off excess moisture and concentrate flavor. If your sauce is thin, remove the lid and increase heat slightly to medium-low for the last 30 minutes. It will tighten up.

Can I make bolognese ahead of time?

Yes, and honestly you should. Bolognese tastes significantly better the next day after the flavors have had time to settle and meld. Make it up to 3 days in advance and refrigerate. Reheat slowly on the stovetop with a splash of broth or water. For longer storage, freeze in portions for up to 3 months.

How do I store leftover bolognese?

Cool the sauce completely before storing. Refrigerate in an airtight container for up to 4 days. To freeze, portion into freezer bags or containers and freeze flat for up to 3 months. Thaw overnight in the refrigerator or reheat directly from frozen in a covered saucepan over low heat with a few tablespoons of water added.

Can I make a dairy-free or gluten-free bolognese?

For dairy-free: substitute full-fat oat milk or unsweetened almond milk for the whole milk, skip the butter and use all olive oil, and omit the Parmesan rind. Season carefully at the end. For gluten-free: the sauce itself contains no gluten —? just serve with your preferred gluten-free pasta. All other ingredients in this recipe are naturally gluten-free.

What pasta shape is best for bolognese?

Traditional Bolognese is served with fresh tagliatelle, a wide flat egg pasta that holds the thick sauce well. Pappardelle is an excellent substitute. If using dried pasta, rigatoni or penne rigate work well because the ridges and tubes catch the meat. Spaghetti is common in the U.S. but not traditional —? the sauce is too thick to coat thin noodles evenly.

Do I have to use both beef and pork?

No, but the combination is worth it. Ground pork adds fat and a subtle sweetness that ground beef alone doesn't provide. All-beef bolognese is good; beef-and-pork bolognese is noticeably better. Some recipes add a small amount of ground veal as a third meat for extra tenderness. If pork is off the table for dietary reasons, all beef with an extra tablespoon of butter works as a reasonable substitute.