In a food processor, combine the ricotta, parmesan, eggs, 2 tablespoons of the olive oil, 2 teaspoons salt, and 1 teaspoon pepper and puree until smooth. Scrape down the side of the bowl and puree again. Add the flour and pulse until the flour is just incorporated. Scrape the gnudi dough into a medium bowl.
Fill a large pot with water and bring to a simmer over medium heat (it should be bubbling but not rapidly boiling) and then add a small handful of salt. Using a 1 1/2-tablespoon ice cream scoop, scoop half the gnudi dough directly into the simmering water. Simmer the gnudi until they rise to the surface, 1 to 2 minutes. Continue to simmer until the gnudi are cooked through, 5 to 7 minutes more. They should be pillowy but just firm (sacrifice 1 gnudi by cutting it in half to check the doneness). Using a slotted spoon, transfer the gnudi to a lightly oiled baking sheet. Repeat with the remaining gnudi dough. Let stand at room temperature for 10 minutes.
In a large nonstick skillet, melt the butter in 2 tablespoons of the olive oil over medium-high heat. Add the gnudi and cook until browned on the bottom, 3 to 5 minutes. Give the pan a shake and cook until the gnudi are coated in the butter mixture, about 1 minute more. Using a slotted spoon, return the gnudi to the baking sheet.
In the same skillet over medium heat, heat the remaining 1 tablespoon olive oil. Add the garlic and cook, stirring, until softened, about 2 minutes. Add the spinach and a generous pinch of salt and cook, stirring, until just wilted, about 3 minutes. Add the gnudi and lemon juice and stir gently to mix.
Season the gnudi and spinach with salt and pepper, then transfer to plates or a platter. Sprinkle with some dukka and serve.