Print

2026 Red Wine Meatballs with Creamy Spinach Mash

5 Stars 4 Stars 3 Stars 2 Stars 1 Star

3.9 from 58 reviews

This recipe features extra-large, tender beef meatballs slowly cooked in a rich and full-bodied red wine gravy, perfect for serving over creamy Gruyère mashed potatoes with baby spinach. The meatballs are first baked, then sautéed to develop a golden crust before being simmered in a thickened red wine and tomato sauce. The accompanying mashed potatoes are infused with butter, warm whole milk, and melted Gruyère cheese, with fresh baby spinach wilted into the mixture for a creamy, flavorful side dish that complements the robust meatballs.

Ingredients

Scale

Meatballs

  • 1 6-ounce piece day-old French bread, cut into 8 pieces (about 1/3 a loaf)
  • 1 cup whole milk
  • 1 3/4 pounds ground beef (7 to 15% fat)
  • 2 large eggs, lightly beaten
  • 1 medium onion, finely chopped
  • 1/2 cup chopped parsley
  • 2 teaspoons salt
  • 1 teaspoon black pepper
  • 1/2 teaspoon dried thyme
  • All-purpose flour, for dusting
  • 2 tablespoons butter
  • 1 1/2 teaspoons olive oil
  • 1 1/2 cups red wine
  • 1/4 cup tomato paste
  • 2 1/2 cups canned beef broth

Mashed Potatoes with Spinach

  • 1 bag baby spinach
  • 4 pounds Yukon Gold potatoes, peeled and cut into 2-inch pieces
  • 1 stick (8 tablespoons) butter
  • 1 1/4 cups warm whole milk, or more as needed
  • 2 cups grated Gruyère cheese

Instructions

  1. Soak Bread in Milk: Preheat the oven to 350°F. In a medium bowl, combine the day-old French bread pieces with 1 cup whole milk, pressing down on the bread to fully submerge it. Allow it to soak for 10 minutes to soften.
  2. Prepare Meatball Mixture: Squeeze out most of the milk from the soaked bread and discard the excess milk. Place the bread into a large bowl and add ground beef, lightly beaten eggs, finely chopped onion, chopped parsley, salt, black pepper, and dried thyme. Using your hands, mix thoroughly until all ingredients are well combined and evenly distributed.
  3. Form and Bake Meatballs: Shape the mixture into large meatballs approximately 1 3/4 inches in diameter. Arrange the meatballs in two 13×9-inch glass baking dishes. Bake in the preheated oven for 30 minutes until they start to firm up. Remove from oven and let them cool slightly.
  4. Brown Meatballs in Skillet: Lightly dust the baked meatballs with all-purpose flour, shaking off any excess. In a large nonstick skillet, melt 2 tablespoons butter with 1 1/2 teaspoons olive oil over medium-high heat. In two batches, sauté the meatballs until browned on all sides, about 3 minutes per batch. Remove skillet from heat.
  5. Make Red Wine Gravy: Return all browned meatballs to the skillet. Whisk together 1/4 cup tomato paste and 1 1/2 cups red wine until smooth, then add this mixture to the skillet. Bring to a boil and boil for 5 minutes until the liquid thickens slightly, stirring often to prevent sticking.
  6. Simmer with Broth: Add 2 1/2 cups canned beef broth to the skillet. Reduce heat to medium and simmer the meatballs in the gravy, stirring occasionally, until the sauce thickens and flavors meld, about 15 minutes. Adjust seasoning with salt and pepper to taste.
  7. Cook Potatoes: While the meatballs simmer, place peeled and cut Yukon Gold potatoes into a large pot of salted water. Bring to a boil and cook until very tender, about 30 minutes. Drain the potatoes well.
  8. Mash Potatoes and Add Ingredients: Transfer drained potatoes to a large bowl. Add 1 stick butter and mash thoroughly until smooth. Gradually stir in 1 1/4 cups warm whole milk until the desired creamy consistency is reached. Fold in 2 cups grated Gruyère cheese, stirring until melted evenly through the potatoes.
  9. Add Spinach: Add the bag of baby spinach directly to the bowl with the mashed potatoes. The residual heat will wilt and steam the spinach. If the potatoes have cooled too much, briefly microwave to reheat and soften the spinach. Stir well to incorporate the spinach evenly.
  10. Season and Serve: Season the mashed potatoes generously with salt and pepper. Serve the braised meatballs hot, spooned with the red wine gravy, alongside the cheesy spinach mashed potatoes for a comforting, hearty meal.

Notes

  • Day-old French bread helps bind the meatballs while keeping them moist and tender.
  • Baking the meatballs before browning helps them hold their shape and reduces cooking fat.
  • Use a good quality dry red wine for a richer and more flavorful gravy.
  • Gruyère cheese adds a nutty flavor and creamy texture to the mashed potatoes; you can substitute with Swiss cheese if needed.
  • For vegetarian or lighter versions, consider substituting beef with plant-based meat alternatives and using vegetable broth in the gravy.
  • Leftover meatballs and gravy can be refrigerated for up to 3 days or frozen for longer storage.
  • Make sure to season the mashed potatoes liberally as the spinach absorbs some saltiness.