Preheat the oven to 350°. Line a 15x10x1-in. baking sheet with parchment paper. In a small bowl, combine panko bread crumbs and Parmesan cheese. Stir in melted butter until crumbs are coated. Spread in an even layer on the prepared baking sheet. Bake 10-12 minutes, stirring once, until golden brown and crispy. Remove to a wire rack to cool.
Heat olive oil and butter in a large skillet set over medium-high heat. Stir in onions and salt; cook 5 minutes, stirring occasionally. Cover; reduce heat to low. Cook until soft, 15-20 minutes, stirring occasionally. Uncover; increase heat to medium; cook until very soft and golden brown, 15-20 minutes. Set aside.
Meanwhile, bring a large pot of water to a boil. Add gnocchi; cook according to package directions. Reserve 1 cup pasta water. Use a slotted spoon to transfer gnocchi to a small bowl; stir in olive oil to coat.
Return skillet to the burner; melt butter over medium heat. Add fennel and celery; cook until softened and lightly browned, 6-7 minutes. Add garlic; cook until fragrant, 30-60 seconds. Stir in flour until coated; cook 30-60 seconds. Stir in white wine, scraping up brown bits on the bottom of the pan. Slowly add warm heavy cream, stirring constantly. Stir in salt, pepper, 1/2 teaspoon thyme and cayenne. Bring to a simmer; stir in shredded cheddar cheese until melted and smooth. Stir in baby spinach; cook until wilted, 1-2 minutes.
Stir 1/2 cup reserved pasta water into the sauce. Stir in caramelized onions, cooked gnocchi and bacon; simmer over low heat until gnocchi is heated through and sauce has thickened. Add additional pasta water, if needed.
Serve gnocchi in bowls topped with Parmesan bread crumbs and additional fresh thyme. Serve immediately.