Gather and prepare your ingredients. Preheat the oven to 200°C/ 180°C fan.
Drizzle the aubergine with olive oil, sprinkle with salt and pepper and lay out onto a baking tray. Bake for 30 minutes, until tender and golden brown.It's okay if they overlap slightly - they will shrink as they cook.
Drizzle the potatoes with olive oil, sprinkle with salt and pepper and lay out onto a baking tray. Bake for 30 minutes, until tender.
Place a large, heavy-bottomed pan over medium-high heat. Add the olive oil and the tempeh with a light sprinkle of salt and pepper. Cook for 2-3 minutes, stirring often, until lightly golden brown.
Add the onion, carrot and celery with another light sprinkle of salt and pepper. Cook for 5-6 minutes, stirring often, until softened and translucent.
Add the garlic, tomato puree, cinnamon, oregano and thyme. Cook, stirring often, for 2-3 minutes until darkened, fragrant and sticky.
Add the tomato passata. Bring to a gentle simmer and cook for 8-10 minutes, until darkened and reduced. Add the balsamic and salt and pepper to taste.
To make the bechamel, place the oat milk into a saucepan with the onion, peppercorns, bay leaf and a pinch of nutmeg. Heat until it reaches the shiver stage (just beginning to simmer but not bubbling). Strain into a jug and set aside.
Place the saucepan back over the heat and add the olive oil and flour. Whisk for 2-3 minutes until you have a thick paste. Then slowly stream in the milk, about a quarter at a time, whisking constantly until you have a smooth, thickened sauce. Turn off the heat and add the nutritional yeast. Adjust seasoning to taste.
Stir through the spinach and cook for 1-2 minutes, just until wilted.
Get a baking dish 28x22x5cm. Layer half of the tempeh sauce, followed by the potatoes, aubergines and green bechamel. Repeat, using the remaining half of each component.
Place into the preheated oven and bake for 30-35 minutes until golden brown and bubbling. Allow to cool for five minutes before serving.