Tagliatelle al Ragù Bolognese

Food

Tagliatelle al Ragù Bolognese

The real thing — no shortcuts, no spaghetti, no apologies

Prep 30 min
Cook 240 min
Servings 6
In 1982, the Italian Academy of Cuisine deposited the official recipe for ragù bolognese with the Bologna Chamber of Commerce. This is not a metaphor. It is a legally registered document, precise to the gram, because the Bolognesi had watched the rest of the world spend a century making something they called Bolognese — flavoured mince, often with spaghetti, often with garlic, usually with red wine, sometimes with cream — and they could no longer remain silent. The official recipe is instructive not for what it contains but for what it does not. No garlic. White wine, not red. Whole milk, added after the wine. Only a small amount of tomato — a few tablespoons of concentrate, not a tin of passata. And under no circumstances spaghetti: the ragù was designed for the surface area and bite of tagliatelle, and it will tell you so. The genius of the real Bolognese is its restraint. Long-cooked, properly reduced, it has a depth that comes not from complexity of ingredients but from patience. The soffritto — onion, carrot, celery, cooked for fifteen minutes until soft — is the flavour base. The mixed meats (beef and pork, for fat and richness) brown into something almost caramelised. The milk, added after the wine reduces, is perhaps the most counterintuitive step and the most important: it tenderises the meat proteins and gives the sauce a gentleness that is the sauce's defining quality. This is a four-hour project. Make it on a Sunday when nowhere else needs you.

Scale Recipe

1 10 20

Instructions

0/8 complete

Cook the soffritto low and slow

Heat the olive oil and butter together in a heavy-bottomed pot or Dutch oven over the lowest heat. Add the diced pancetta and render for 5 minutes. Add the onion, carrot and celery. Cook on low heat, stirring occasionally, for 15–20 minutes until completely soft, sweet-smelling and barely coloured. Do not rush this step — it is the foundation.

The soffritto should look glossy and collapsed, not browned.

Brown the meat

Increase heat to medium-high. Add the beef and pork mince in two additions, breaking it apart with a wooden spoon. Allow it to colour properly — 8–10 minutes — before continuing. Don't stir constantly; let it sit in contact with the pot to develop colour and flavour. Season generously with salt and pepper.

Add the white wine

Pour in the white wine. Stir vigorously, scraping up any browned bits from the base of the pot. Simmer until the wine has fully evaporated and there is no sharp alcohol smell remaining — about 5–8 minutes.

Add the milk

Pour in the whole milk. Stir to combine. Simmer on medium-low until the milk has been fully absorbed and no white liquid remains — about 10 minutes. The meat will look pale and glossy. This step is not optional; the milk is what makes the texture of an authentic Bolognese distinctly tender.

Add tomato and stock

Stir in the tomato concentrate until it coats the meat evenly. Add the warm beef stock. Bring to a gentle simmer. The sauce should just barely bubble at the surface — a few lazy blips every few seconds.

The long braise

Cover with a lid slightly ajar. Cook on the lowest possible heat for 3–4 hours, stirring every 30 minutes. Add a splash of water or stock if it looks too dry at any point. By the end, the sauce should be thick, glossy and reduced — very little liquid remaining, the fat just starting to separate at the edges (which is desirable).

The total volume will reduce by roughly half. This concentration is where the depth comes from.

Final seasoning

Taste the ragù and adjust salt and pepper. Add the 20g of butter and stir to incorporate — this gives the sauce a final gloss. Keep warm over very low heat.

Cook the pasta and bring together

Cook the tagliatelle in generously salted boiling water until 1 minute before al dente. Reserve 200ml of pasta water. Drain and add the pasta directly to the ragù pan over low heat. Toss vigorously, adding splashes of pasta water to loosen to a coating consistency. Finish with half the Parmigiano. Divide between warm bowls and top with the remaining Parmigiano.
<button type="button" class="group/star p-0.5 transition-transform hover:scale-110 focus:outline-none focus-visible:ring-2 focus-visible:ring-citrus-400 rounded" hx-post="/api/community/rate" hx-vals='{&quot;slug&quot;:&quot;tagliatelle-ragu-bolognese&quot;,&quot;rating&quot;:1}' hx-target="#engagement-section" hx-swap="outerHTML" aria-label="Rate 1 out of 5" > <svg class="w-7 h-7 text-salt-300 group-hover/star:text-citrus-300 transition-colors" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" > <path stroke-linecap="round" stroke-linejoin="round" d="M11.48 3.499a.562.562 0 011.04 0l2.125 5.111a.563.563 0 00.475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.563.563 0 00-.182.557l1.285 5.385a.562.562 0 01-.84.61l-4.725-2.885a.562.562 0 00-.586 0L6.982 20.54a.562.562 0 01-.84-.61l1.285-5.386a.562.562 0 00-.182-.557l-4.204-3.602a.562.562 0 01.321-.988l5.518-.442a.563.563 0 00.475-.345L11.48 3.5z" /> </svg> </button> <button type="button" class="group/star p-0.5 transition-transform hover:scale-110 focus:outline-none focus-visible:ring-2 focus-visible:ring-citrus-400 rounded" hx-post="/api/community/rate" hx-vals='{&quot;slug&quot;:&quot;tagliatelle-ragu-bolognese&quot;,&quot;rating&quot;:2}' hx-target="#engagement-section" hx-swap="outerHTML" aria-label="Rate 2 out of 5" > <svg class="w-7 h-7 text-salt-300 group-hover/star:text-citrus-300 transition-colors" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" > <path stroke-linecap="round" stroke-linejoin="round" d="M11.48 3.499a.562.562 0 011.04 0l2.125 5.111a.563.563 0 00.475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.563.563 0 00-.182.557l1.285 5.385a.562.562 0 01-.84.61l-4.725-2.885a.562.562 0 00-.586 0L6.982 20.54a.562.562 0 01-.84-.61l1.285-5.386a.562.562 0 00-.182-.557l-4.204-3.602a.562.562 0 01.321-.988l5.518-.442a.563.563 0 00.475-.345L11.48 3.5z" /> </svg> </button> <button type="button" class="group/star p-0.5 transition-transform hover:scale-110 focus:outline-none focus-visible:ring-2 focus-visible:ring-citrus-400 rounded" hx-post="/api/community/rate" hx-vals='{&quot;slug&quot;:&quot;tagliatelle-ragu-bolognese&quot;,&quot;rating&quot;:3}' hx-target="#engagement-section" hx-swap="outerHTML" aria-label="Rate 3 out of 5" > <svg class="w-7 h-7 text-salt-300 group-hover/star:text-citrus-300 transition-colors" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" > <path stroke-linecap="round" stroke-linejoin="round" d="M11.48 3.499a.562.562 0 011.04 0l2.125 5.111a.563.563 0 00.475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.563.563 0 00-.182.557l1.285 5.385a.562.562 0 01-.84.61l-4.725-2.885a.562.562 0 00-.586 0L6.982 20.54a.562.562 0 01-.84-.61l1.285-5.386a.562.562 0 00-.182-.557l-4.204-3.602a.562.562 0 01.321-.988l5.518-.442a.563.563 0 00.475-.345L11.48 3.5z" /> </svg> </button> <button type="button" class="group/star p-0.5 transition-transform hover:scale-110 focus:outline-none focus-visible:ring-2 focus-visible:ring-citrus-400 rounded" hx-post="/api/community/rate" hx-vals='{&quot;slug&quot;:&quot;tagliatelle-ragu-bolognese&quot;,&quot;rating&quot;:4}' hx-target="#engagement-section" hx-swap="outerHTML" aria-label="Rate 4 out of 5" > <svg class="w-7 h-7 text-salt-300 group-hover/star:text-citrus-300 transition-colors" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" > <path stroke-linecap="round" stroke-linejoin="round" d="M11.48 3.499a.562.562 0 011.04 0l2.125 5.111a.563.563 0 00.475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.563.563 0 00-.182.557l1.285 5.385a.562.562 0 01-.84.61l-4.725-2.885a.562.562 0 00-.586 0L6.982 20.54a.562.562 0 01-.84-.61l1.285-5.386a.562.562 0 00-.182-.557l-4.204-3.602a.562.562 0 01.321-.988l5.518-.442a.563.563 0 00.475-.345L11.48 3.5z" /> </svg> </button> <button type="button" class="group/star p-0.5 transition-transform hover:scale-110 focus:outline-none focus-visible:ring-2 focus-visible:ring-citrus-400 rounded" hx-post="/api/community/rate" hx-vals='{&quot;slug&quot;:&quot;tagliatelle-ragu-bolognese&quot;,&quot;rating&quot;:5}' hx-target="#engagement-section" hx-swap="outerHTML" aria-label="Rate 5 out of 5" > <svg class="w-7 h-7 text-salt-300 group-hover/star:text-citrus-300 transition-colors" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" > <path stroke-linecap="round" stroke-linejoin="round" d="M11.48 3.499a.562.562 0 011.04 0l2.125 5.111a.563.563 0 00.475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.563.563 0 00-.182.557l1.285 5.385a.562.562 0 01-.84.61l-4.725-2.885a.562.562 0 00-.586 0L6.982 20.54a.562.562 0 01-.84-.61l1.285-5.386a.562.562 0 00-.182-.557l-4.204-3.602a.562.562 0 01.321-.988l5.518-.442a.563.563 0 00.475-.345L11.48 3.5z" /> </svg> </button>

Be the first to rate