In a large pot, heat olive oil over medium heat. Add the chopped onion and sauté until softened, about 3 minutes.
Stir in the garlic and cook for another minute until fragrant.
Add butter to the pot and let it melt. Sprinkle in the flour and whisk for 1-2 minutes to form a roux.
Gradually add chicken broth, whisking constantly to avoid lumps.
Stir in milk, heavy cream, salt, pepper, Italian seasoning, and red pepper flakes.
Add the broken lasagna noodles and let the soup simmer for 12-15 minutes, stirring occasionally, until the noodles are tender.
Stir in the shredded chicken, Parmesan cheese, and mozzarella cheese, allowing them to melt into the soup.
If using, add chopped spinach and let it wilt for 2 minutes before serving.
Ladle into bowls and enjoy warm.