Boil water in a large pot with a couple tablespoons of salt (not in the ingredient list). Cook spaghetti according to the package. Meanwhile, start cooking the sauce.
In a large frying-pan, heat oil with garlic. When the garlic starts turning color, add onion and cook until tender. Add butter, sprinkle flour over the onion, and cook for a couple of minutes stirring constantly. Add a small amount of milk first to avoid lumps, and then add the rest of milk. Add tuna and spinach. Season with salt and pepper.
Add strained cooked pasta to the sauce and mix. Top with grated cheese (optional).