Spray a large casserole dish with olive oil spray. Add chopped onions and cook for 2 minutes until slightly softened.
Stir in garlic, carrots, celery, salt, herbs, brown sugar, and bay leaves. Cook for 8 minutes, adding a splash of stock if needed.
Add lean beef mince and cook, breaking it up with a wooden spoon, until browned all over.
Stir in tomato puree, balsamic vinegar, soy sauce, and Worcestershire sauce. Mix well to coat the meat.
Stir in butternut squash and beef stock. Bring to a simmer, partially cover, and cook for 30 minutes until squash softens.
Stir in cornflour slurry and simmer 2 minutes until thickened. Remove bay leaves and mash a few squash pieces for body.
While the filling simmers, boil potatoes in salted water until tender, about 15 minutes. Drain, reserving ½ cup cooking water.
Mash potatoes with fromage frais and reserved cooking water until smooth and creamy. Stir in parsley (optional) and season to taste.
Preheat oven to 220°C/400°F. Spread beef mixture in a baking dish, top with mashed potatoes, and smooth with a spoon. Sprinkle Parmesan over the top.
Bake for 30–35 minutes until golden brown and bubbling. Let cool 10–15 minutes before serving. Garnish with parsley if desired.