Bring a large pot of salted water to a boil over high heat. Add the pasta and cook until tender but still firm to the bite, stirring occasionally, about 8 to 10 minutes. Drain and reserve about 1 cup of the pasta water.
In a large skillet over medium-high heat, heat the oil. Add the garlic and cook until fragrant and lightly browned, about 2 minutes. Using a slotted spoon, remove the garlic and discard. Add the Swiss chard and cook until wilted. In batches, add the spinach and cook until wilted. Add the beans and tomatoes and cook for 5 minutes. Turn off the heat. Add the pasta, 1/2 of the cheese, and lemon zest. Toss well and thin out the sauce with a little pasta water, if needed.
Transfer to a large serving bowl and season with salt and pepper. Sprinkle with the remaining cheese and serve.