For the tomato sauce, heat the olive oil and sauté the onion and garlic for 3-4 minutes. Add the balsamic vinegar and cook for about 30 seconds. Stir in the canned chopped tomatoes, sun-dried tomatoes, tomato puree and bay leaf. Bring to a boil and simmer for 10 minutes. Remove and discard the bay leaf. Set aside.
Sauté the spinach in the olive oil until wilted, then drain and roughly chop. Mix with the ricotta cheese, stir in 2 tablespoons of freshly grated Parmesan cheese and season with a little salt and pepper. Set aside.
For the cheese sauce, melt the butter and stir in the flour and cook for about 1 minute. Gradually stir in the milk and cook for about 2 minutes until thickened. Stir in the cheddar cheese until melted, and season to taste.
If using fresh lasagna, you will need to cook it in boiling water first, according to the instructions on the package.
To assemble the lasagna, spoon a third of the tomato sauce onto the base of a fairly deep ovenproof lasagna dish (about 7 inches square) and cover with a layer of spinach and ricotta. Cover with 2 sheets of lasagna, followed by a layer of the cheese sauce, then a layer of tomato sauce. Repeat each layer twice, finishing with a layer of cheese sauce.
Sprinkle with Parmesan cheese and bake in a preheated oven for 30 minutes.