A specific smell fills a kitchen when a bolognese sauce has been simmering for three hours.
Not just tomato. Something deeper—the sweetness of carrot and onion cooked down into the beef, the faint tang of wine that’s mostly evaporated, the warm edge of nutmeg.
It smells like a kitchen in Bologna on a Sunday afternoon.
Most American “bolognese” doesn’t smell like that. It’s a jar of marinara with a pound of ground beef dumped in and simmered for twenty minutes.
It tastes fine. It’s not bolognese.
Real bolognese is a ragù—a slow-cooked meat sauce where the meat is the star and the tomato is a supporting player.
It uses milk to tenderize the beef, wine to build depth, and a soffritto of onion, celery, and carrot as the foundation.
It simmers for three hours, mostly unattended, until the fat separates from the meat and the sauce turns glossy and thick.
This recipe is based on Marcella Hazan’s classic version—the standard that most Italian home cooks still measure against. It takes about 20 minutes of hands-on work and then three hours of walking away.
The result is the best bolognese you’ll make at home, without complicating a single step.
Let’s make it.
Why This Recipe Works

Add the milk before the wine; it’s the single most important step. Simmering milk with the beef tenderizes the meat and removes the raw, gamey flavor ground beef can have. It also creates a subtle sweetness that balances the tomatoes’ acidity. If you skip the milk, the sauce tastes flat and harsh.
Add the wine after the milk has fully evaporated. White wine deglazes the pan and adds acidity and depth. It must reduce completely before the tomatoes go in, or the sauce will taste boozy instead of rich.
A soffritto of onion, celery, and carrot is the foundation, not a garnish. The classic Italian ratio is 2 parts onion to 1 part celery to 1 part carrot. Cook slowly in butter and oil; these vegetables melt into the sauce and become the base everything else builds on.
The pork and beef blend is what makes it taste like Bologna. A mix of 1 part ground pork to 2 parts ground beef chuck gives you fat, flavor, and the right texture. All-beef versions are leaner and drier.
A Parmesan rind simmers in the pot and dissolves into umami. Drop one in with the tomatoes, fish it out before serving, and the sauce tastes like it simmered all day. It’s the same trick that makes Italian soups taste restaurant-quality.
A splash of fish sauce or Worcestershire is invisible but essential. One teaspoon of either adds glutamates that deepen the sauce’s meaty flavor. Nobody will taste the fish sauce. They’ll wonder why your bolognese tastes better than theirs.
Only 1½ cups of tomatoes for a pound of meat. This is the biggest difference between real bolognese and American meat sauce. Authentic bolognese is meat-forward, not tomato-forward. Too much tomato and the sauce turns red and sweet instead of deep and savory.
The three-hour simmer is not optional, but it’s also not hands-on. The sauce reduces, concentrates, and develops layers of flavor over three hours. Stir it every 30 minutes or so, and add a splash of water if it dries out. That’s it.
The fat separating at the end is the sign that it’s done. When you see a thin layer of fat pooling on the surface, and the sauce is thick and glossy, it’s ready. If the sauce is still loose, keep simmering.
Tossing with pasta water and butter emulsifies the sauce. A tablespoon of butter and a splash of starchy pasta water, stirred into the pasta and sauce, make it cling to every strand instead of pooling at the bottom of the bowl.
Bolognese Sauce Recipe
An authentic Italian ragù with ground beef and pork, soffritto, milk, white wine, and San Marzano tomatoes. Simmer for 3 hours, mostly hands-off. About 6 servings.
Ingredients
For the Bolognese:
- 1 tbsp olive oil
- 3 tbsp unsalted butter
- ½ cup yellow onion, finely chopped (about 1 small onion)
- ⅔ cup celery, finely chopped (about 2 ribs)
- ⅔ cup carrot, finely chopped (about 2 medium carrots)
- ¾ lb ground beef chuck (85/15 or 80/20)
- ¼ lb ground pork
- 1 tsp kosher salt, plus more to taste
- ½ tsp freshly ground black pepper
- 1 cup whole milk
- ⅛ tsp freshly grated nutmeg
- 1 cup dry white wine (Pinot Grigio, Sauvignon Blanc, or Vermentino)
- 1½ cups canned San Marzano plum tomatoes, crushed by hand with their juice
- 1 Parmesan rind (about 2 inches)
- 1 tsp fish sauce or Worcestershire sauce
- ½ cup water, as needed during simmering
For Serving:
- 1½ lbs pasta (tagliatelle, fettuccine, or pappardelle)
- 1 tbsp unsalted butter (for tossing)
- Reserved pasta water
- Freshly grated Parmigiano-Reggiano
Instructions
- Build the soffritto. Heat the olive oil and butter in a large, heavy-bottomed pot or Dutch oven over medium heat. Add the onion and cook for 4–5 minutes until translucent. Add the celery and carrot and cook for 2 more minutes, stirring to coat. The vegetables should be soft and fragrant, not browned.
- Add the meat and brown it. Add the ground beef and ground pork, along with a large pinch of salt and a few grindings of black pepper. Break the meat apart with a wooden spoon and cook for 6–8 minutes, stirring occasionally, until it has lost all its raw red color.
- Simmer in the milk. Pour in the whole milk and bring to a gentle simmer. Cook for 8–10 minutes, stirring frequently, until the milk has bubbled away completely and the meat is coated in a light glaze. Add the grated nutmeg and stir to combine.
- Add the wine and let it evaporate. Pour in the white wine and stir. Simmer for 5–7 minutes, until the wine has fully evaporated and no sharp alcohol smell remains. The pan should smell sweet and winey, not boozy.
- Add the tomatoes and the umami boosters. Add the crushed San Marzano tomatoes with their juice, the Parmesan rind, and the fish sauce or Worcestershire. Stir thoroughly to coat everything.
- Simmer for 3 hours. Bring the sauce to a lazy simmer—just an occasional bubble breaking the surface—then reduce the heat to the lowest setting that maintains it. Cook uncovered for 3 hours, stirring every 20–30 minutes. If the sauce dries out and starts sticking, add ¼ cup of water at a time to keep it loose. The sauce is done when the fat separates from the meat and pools slightly on the surface, and the sauce is thick and glossy.
- Remove the Parmesan rind. Fish it out with tongs and discard.
- Taste and season. Taste the sauce and add more salt or pepper as needed. Stir to mix the fat back into the sauce.
- Cook the pasta. Bring a large pot of heavily salted water to a boil. Cook the pasta until just al dente. Reserve 1 cup of pasta water before draining.
- Toss and serve. Return the drained pasta to the pot. Add the butter and a splash of pasta water. Toss over low heat for 30 seconds until the pasta is glossy. Add the bolognese sauce and toss again, adding more pasta water a tablespoon at a time until the sauce clings to every strand. Serve immediately with freshly grated Parmigiano-Reggiano.
Notes
Protein per Serving: About 28g (sauce only)
Nutrition note: Estimated per serving of sauce with ground beef and pork, soffritto, milk, wine, and tomatoes: ~380 calories, 28g protein, 14g carbs, 24g fat. Serving it over 4 oz cooked pasta adds roughly 200 calories and 7g protein. Total per plate with pasta and Parmesan: ~640 calories, 36g protein.
Slow Cooker Version

If you want it entirely hands-off:
- Complete steps 1–5 on the stovetop in a skillet.
- Transfer everything to a slow cooker. Add the Parmesan rind and fish sauce.
- Cover and cook on Low for 6–8 hours (or on High for 3–4 hours). Stir once or twice during cooking and add a splash of water if it looks dry.
- Remove the Parmesan rind, taste, and season. The fat should have separated by the end.
Pressure Cooker Version
If you’re short on time:
- Complete steps 1–5 using the sauté function on your Instant Pot.
- Seal the lid and cook on high pressure for 20 minutes. Let the pressure release naturally for 10 minutes, then quick release.
- Remove the lid and simmer on Sauté mode for 10–15 minutes, stirring occasionally, until the sauce thickens and the fat separates.
Tips for the Best Bolognese Sauce

Use the pork and beef blend. A 1:2 ratio of pork to beef gives you fat, flavor, and the right texture. All-beef versions are leaner and drier.
Chop the soffritto finely, not roughly. The vegetables should melt into the sauce, not sit in it as recognizable chunks. Aim for ¼-inch dice or smaller.
Don’t brown the vegetables, only soften them. Browning the soffritto makes the sauce taste bitter. Keep the heat on medium and cook until translucent.
Milk before wine, always. The milk tenderizes the meat and removes the raw flavor. The wine deglazes and adds acidity. Reversing the order changes the flavor.
Use whole milk, not skim. The fat in whole milk tenderizes the meat and creates a glossy texture. Skim milk leaves the sauce thin.
Grate the nutmeg fresh. Pre-ground nutmeg is flavorless. A few passes of a whole nutmeg over a microplane gives you a warm, aromatic note that pre-ground can’t match.
Use a dry white wine you’d actually drink. Cooking wine is salty and harsh. A $10 bottle of Pinot Grigio or Sauvignon Blanc is perfect.
San Marzano tomatoes matter. They’re sweeter, less acidic, and have fewer seeds than standard plum tomatoes. Look for the DOP certification on the label.
Don’t add too much tomato. 1½ cups for a pound of meat keeps the sauce meat-forward. More tomato and the sauce turns red and sweet instead of deep and savory.
The Parmesan rind is the biggest upgrade. It dissolves into the sauce and adds umami depth that would otherwise take hours to develop. Save your rinds in the freezer.
The fish sauce or Worcestershire is invisible but essential. One teaspoon adds glutamates that deepen the meaty flavor. Nobody will taste it.
Stir every 20–30 minutes, no more. The sauce needs to sit and reduce. Over-stirring breaks up the meat and makes the sauce grainy.
Add water, not broth, if the sauce dries out. Broth dilutes the flavor. Water replaces what evaporated.
The fat separating is the sign it’s done. When you see a thin layer of fat pooling on the surface, and the sauce is thick and glossy, it’s ready. If it’s still loose, keep simmering.
Toss with pasta water and butter, not just sauce. The starchy pasta water and butter emulsify the sauce so it clings to every strand.
Troubleshooting

The sauce tastes flat. It needs salt, umami, or more time. Add a pinch more salt, a splash of fish sauce, or simmer for another 30 minutes.
The sauce tastes too tomatoey. You used too many tomatoes or the wrong kind. Bolognese is meat-forward—1½ cups of San Marzano tomatoes is the right amount for a pound of meat.
The sauce tastes boozy. You didn’t let the wine fully evaporate. Simmer longer before adding the tomatoes.
The sauce is greasy. The fat hasn’t emulsified. Stir it back in and simmer for another 15 minutes. If it’s still pooling, spoon off a few tablespoons.
The sauce is dry. You simmered it uncovered too long. Add ¼ cup of water at a time until it reaches a saucy consistency.
The sauce is watery. You didn’t simmer it long enough, or your tomatoes were too juicy. Continue simmering uncovered until the fat separates and the sauce thickens.
The meat is grainy. You over-stirred during the simmer. Let it sit and stir only every 20–30 minutes.
The sauce is bitter. You browned the vegetables or burnt the meat. Keep the heat on medium and stir frequently during the first steps.
The sauce doesn’t cling to pasta. You didn’t toss it with pasta water. The starch in the water emulsifies the sauce and helps it coat every strand.
Easy Variations

Creamy Bolognese Sauce. Stir in ½ cup of heavy cream during the last 10 minutes of simmering. Richer and slightly pink.
Bolognese With Jar Sauce (Shortcut). Skip the canned tomatoes and use 2 cups of good-quality jarred marinara instead. Reduce the simmer time to 1 hour. Faster, but less authentic.
Bolognese Sauce With Hot Sauce. Add 1 teaspoon of Calabrian chili paste or ½ teaspoon of crushed red pepper flakes with the tomatoes. Adds heat without changing the character.
Bolognese With Italian Sausage. Swap the ground pork for ¼ lb of Italian sausage, casings removed. The sauce gets fennel and spice.
Vegetarian Bolognese. Swap the meat for 1 cup of cooked brown lentils and 1 cup of finely chopped mushrooms. Use vegetable broth instead of milk. Simmer for 1 hour instead of 3.
Bolognese Lasagna. Use the sauce as the meat layer in lasagna. It makes enough for one 9×13 pan.
Bolognese Over Polenta. Skip the pasta and serve the sauce over creamy polenta with Parmesan—a Northern Italian variation.
Storage and Food Safety
Refrigerator: Store the sauce in an airtight container for up to 5 days. The flavor improves overnight as the fat and meat continue to meld.
Freezer: Freeze in portion-sized containers for up to 3 months. Thaw overnight in the refrigerator, then reheat gently on the stovetop over low heat, adding a splash of water if needed.
Make Ahead: The sauce is best made a day ahead. Cool completely, refrigerate overnight, and reheat gently. The flavors deepen significantly.
Food Safety: Ground beef and pork must reach an internal temperature of 160°F. Refrigerate leftovers within 2 hours. Never leave the sauce at room temperature for more than 2 hours.
Frequently Asked Questions
What is the difference between bolognese and marinara?
Bolognese is a meat-based ragù with a soffritto, milk, and wine, and only a small amount of tomato. Marinara is a tomato-based sauce with garlic and herbs and no meat. They’re completely different sauces.
Is bolognese supposed to be red or brown?
Authentic bolognese is more brown-orange than red. It’s meat-forward with only 1½ cups of tomatoes for a pound of meat. American versions tend to be much redder.
How long should bolognese simmer?
Simmer for at least 3 hours on the stovetop. The sauce is done when the fat separates from the meat and pools slightly on the surface. The slow cooker version takes 6–8 hours on Low.
Can I make this in a slow cooker?
Yes. Complete the stovetop steps 1–5, then transfer to a slow cooker and cook on Low for 6–8 hours. Full instructions are in the Slow Cooker Version section above.
Can I make this in an Instant Pot?
Yes. Complete steps 1–5 using the sauté function, then pressure cook on high for 20 minutes with a 10-minute natural release. Simmer on sauté mode for 10–15 minutes to thicken. Full instructions are in the Pressure Cooker Version section above.
Why does the recipe use milk?
Milk tenderizes the ground meat and removes the raw, gamey flavor. It also adds a subtle sweetness that balances the tomatoes’ acidity. Skipping it makes the sauce taste flat.
What wine should I use?
A dry white wine you’d actually drink. Pinot Grigio, Sauvignon Blanc, or Vermentino all work. Avoid “cooking wine,” which is salty and harsh.
What pasta goes with bolognese?
Tagliatelle is the traditional choice. Fettuccine, pappardelle, and rigatoni all work. Avoid spaghetti—it’s too thin to hold the sauce properly.
Can I freeze bolognese sauce?
Yes. Freeze in portion-sized containers for up to 3 months. Thaw overnight in the refrigerator and reheat gently on the stovetop.
Is this recipe gluten-free?
Only if you use gluten-free pasta and confirm your wine, fish sauce, and Worcestershire sauce are gluten-free. The sauce itself is naturally gluten-free.
How much protein is in a serving?
About 28 grams per serving of sauce, or 36 grams per plate with pasta and Parmesan.
More Ground Beef Recipes You’ll Love
- Burger Bowls Recipe With Ground Beef (Loaded & Ready In 30 Minutes!)
- High-Protein Big Mac Salad (Low Carb & Meal Prep Friendly)
- 5-Ingredient Hamburger Meat Recipes (Quick & High-Protein Dinners)
- High-Protein Egg Roll In A Bowl (Ground Beef, 20 Minutes!)
Conclusion
This bolognese sauce is the real thing. A soffritto of onion, celery, and carrot melted into ground beef and pork. Milk simmered in to tenderize the meat. White wine reduced to nothing. San Marzano tomatoes, a Parmesan rind, and a splash of fish sauce building depth. Then three hours of lazy simmering until the fat separates and the sauce turns glossy and thick.
It takes 20 minutes of hands-on work, and then it cooks itself. It’s the best bolognese you’ll make at home, and it doesn’t require a single complicated step.
Make it this Sunday. Freeze half. Toss the rest with tagliatelle. Grate the Parmigiano-Reggiano at the table.