Ingredients Jump to Instructions ↓

  1. 2 tablespoons extra-virgin olive oil

  2. 1/2 small onion, finely chopped

  3. 1 stalk celery , finely chopped

  4. 1/2 medium carrot, finely chopped

  5. 1 28-ounce can whole plum tomatoes , crushed by hand 1 bay leaf

  6. 2 fresh basil leaves

  7. 4 ounces russet potato , peeled (about 1/3 large potato)

  8. Kosher salt

  9. 1 pound ground veal shoulder

  10. 1/3 cup grated parmesan cheese , plus more for topping

  11. 2 tablespoons whole milk

  12. 1 1/2 teaspoons minced garlic

  13. 1 teaspoon chopped fresh thyme

  14. 1/4 cup extra-virgin olive oil

  15. Freshly ground pepper

  16. 4 to 6 pieces baguette , split open

Instructions Jump to Ingredients ↑

  1. Make the sauce: Heat the olive oil in a medium saucepan over medium heat. Add the onion , celery, carrot and a pinch of salt and cook, stirring occasionally, until soft, about 8 minutes. Stir in the tomatoes and their juices, the bay leaf, basil and 1/2 cup water. Bring to a simmer and cook, stirring occasionally, until the sauce thickens, 30 to 40 minutes. Season with salt.

  2. Meanwhile, make the meatballs: Put the potato in a small saucepan with cold water to cover; add 2 teaspoons salt and bring to a boil. Cook until the potato is tender, about 10 minutes. Cool slightly, then coarsely grate the potato with a box grater .

  3. Mix the ground veal , parmesan, milk , garlic, thyme , 1 tablespoon olive oil, 1/4 teaspoon pepper and 1 teaspoon salt with your hands until just combined. Gently form the mixture into 1-inch meatballs.

  4. Heat the remaining 3 tablespoons olive oil in a large nonstick skillet over medium-high heat. Add the meatballs and cook, turning occasionally, until browned and just cooked through, about 8 minutes. Transfer to the sauce and simmer 5 minutes.

  5. Fill the baguette pieces with the meatballs and top with more sauce. Sprinkle with parmesan.

  6. Photograph by Joseph DeLeo


Send feedback