For the ragu, melt the butter in a large flameproof casserole dish over a medium heat until foaming. Add the celery, carrot, onion, porcini, rosemary and some seasoning, and fry for 5 mins.
Season the meat, add to the dish and cook for 5 mins until browned. Pour in the wine, add the tomatoes and bring to the boil.
Reduce the heat to low, put the lid on the dish and cook for 1hr 30 mins, removing the lid for the final 30 mins so the sauce can reduce. The meat should be tender but not too broken up, and the sauce should be thick. Taste for seasoning. You can cook it for longer if you have time - the flavour will only improve.
For the béchamel sauce, pour the milk into a saucepan with the bay leaf. Bring to a simmer, turn off the heat and set aside. In a heavy-based saucepan, melt the butter over a medium heat, then whisk in the flour and hot milk. Whisk vigorously until smooth, then cook for 10-15 mins until very thick. Remove the bay leaf and season, grating in nutmeg to taste. Stir in the parmesan and egg yolks, then set aside to cool.
Heat oven to 180C/160C fan/gas 4. Working in batches of three, plunge the pasta sheets into a pan of boiling salted water for 20 secs, just to soften, then immediately put in a bowl of ice-cold water.
Rub oil onto the base and sides of a large baking dish. Put a layer of pasta on the base, then add a layer of ragu, followed by a layer of béchamel sauce. A good tip, for really defined layers, is to pipe the béchamel sauce over.
Repeat this process until you have used all the pasta and ragu, and finish with a layer of béchamel sauce on top. Sprinkle the top with a generous layer of parmesan.
Bake in the oven for 40-45 mins or until bubbling and golden brown, then remove from the oven and leave to settle for 10 mins.
Cut the lasagne into squares and let it sit for another 10 mins before serving – this keeps the layers defined and helps it cool down more quickly.