Heat oil in a large saucepan. Add the onion, carrot, celery and garlic with a good pinch of salt and sauté for about 5 minutes, stirring often. Add the bacon and cook until vegetables are softened and bacon cooked, roughly 10 minutes. Increase the heat and add the meat slowly, stirring constantly and breaking up the lumps with a spoon. This allows the water in the beef to evaporate, and brown the meat. Once no pink remains, allow cooking until all the water evaporates and the meat caramelizes slightly, about 10 minutes. Be sure at this stage that it is just browning and not burning. Reduce the heat to medium and deglaze with wine, scraping everything off the bottom of the pan with a wooden spoon, while the wine reduces (2-3 minutes). Reduce heat slightly and add milk, tomatoes (with liquid), beef stock, salt and pepper, stir to combine and increase heat to boil. As soon as it begins to bubble lower the heat and allow simmering very slowly, until thick (about 20 minutes). Serve over cooked spaghetti.
Note: Typically this recipe uses 2 cups of milk and is simmered for 4 hours, I however don’t always have that kind of time, so over the years I have adapted the recipe to suit my tastes, and needs.