Bulalo (Bone Marrow Soup)

Bone marrow is the star of this luscious, meaty soup.

Bulalo served in a bowl

Rezel Kealoha

Why It Works

  • Rinsing and soaking the marrow bones and beef shank in cold water draws out blood and reduces cloudiness in the broth.
  • Using the reserved corn cobs and cabbage, scallion, and onion trimmings enriches the flavor of the broth while reducing waste. 
  • Roasting the bone marrow separately keeps the marrow intact.

Bulalo—a luscious, meaty soup featuring marrow bones, beef shanks, cabbage, potatoes, and corn simply seasoned with fish sauce—dates back to before the Spanish occupation of the Philippines. It originated in the Southern region of Luzon, one of the archipelago's three major islands, either in the province of Batangas or the town of Tagaytay. Having had the bulalo in Tagaytay in the province of Cavite, where bulalo can be found in most streetside eateries 24/7. I can see why the locals claim it as their own, as it's one of the best versions I've ever had.

Like many other Filipino dishes, this soup uses off-cuts, such as beef hocks and bones, for both flavor and sustenance. But as long as you’ve got the marrow, you’ll have bulalo; part of the dish's allure is sucking the marrow out of the bones. The addition of vegetables like cabbage, potatoes, and corn varies from region to region and eatery to eatery. For example, my birth island, Negros Occidental in central Philippines, has a version of bulalo called kansi, which I consider to be the love child of sinigang, a tart pork and vegetable stew, and bulalo—it’s a sour, bone marrow-based soup flavored with juicy, astringent-tasting batwan, a small, round, indigenous fruit that resembles a green tomato.

My version of bulalo focuses on building a flavorful soup base made by simmering beef shanks with vegetable trimmings, and serving it over roasted corn, potatoes, and marrow bones. While the resulting soup may be subtle in flavor, it's loaded with contrasting textures and captures the essence of the dish.

To make bulalo, I start by building the broth in a large Dutch oven. I brown the shanks in oil, first, then sauté onions and garlic in the fat. When they're golden, I reserve them for the soup, and then make a quick vegetable broth with the vegetable trimmings, after which I add back in the browned shanks, the cooked garlic and onion, as well as the tendon and knuckles. I simmer everything until the meats are tender, then add the cabbage and cook it until it, too, is tender, then I season the broth with fish sauce. About an hour before the soup is done, I roast the potatoes and bone marrow, the potatoes until they're soft and tender, the bone marrow until it's browned and crispy on the surface and just pulling away from the bone.

When the soup's done, I divide the beefy bits among serving bowls, top each one with the potatoes, corn, and cabbage, and ladle in the broth. The result is a soup in which there's a range of textures from the beef and the individually cooked vegetables, all swimming in a comforting soup that can be savored any time of the year.

Recipe Facts

Prep: 60 mins
Cook: 4 hrs 35 mins
Total: 5 hrs 35 mins
Serves: 4 servings

Rate & Comment


  • 5 pounds (2.3kg) beef marrow bones, cut crosswise into 2-inch pieces (see note)
  • 2 bone-in beef shanks (about 2 1/2 pounds)
  • Kosher salt and freshly ground black pepper
  • 2 ears sweet corn, shucked 
  • 4 tablespoons (75ml) canola or other neutral oil, divided
  • 2 medium garlic cloves, minced
  • 1/2 medium red onion (4 ounces; 115g), cut into 1/8-inch-thick slices (reserve trimmings)
  • 1/2 Napa cabbage (1 pound; 450g), cut into 3-inch-thick slices (reserve trimmings)
  • 2 scallions, ends trimmed and sliced thinly on a bias, for garnish (reserve trimmings) 
  • 1 pound (450g) beef tendons, rinsed and patted dry with paper towels (optional)
  • 1 pound (450g) beef knuckles, rinsed and patted dry with paper towels (optional)
  • Fish sauce, to taste
  • 1 pound (450g) yellow fingerling potatoes (about 5 to 7 potatoes), scrubbed and cut into 2-inch pieces
  • Cooked white rice, for serving


  1. Rinse marrow bones and beef shanks under cold running water. Transfer to a large bowl, cover with cold water, and let soak for 1 hour. Rinse, pat dry with paper towels, season with salt and pepper, and set aside.

    Rinsed marrow bones and beef shanks set on a paper-toweled lined rimmed baking sheet

    Rezel Kealoha

  2. Meanwhile, adjust oven rack to middle position and preheat to 425°F (218°C). In a medium bowl, toss corn with 1 tablespoon (15ml) oil. Place on rimmed baking sheet and roast, rotating corn after 15 minutes, until corn is tender and lightly browned, about 30 minutes total. Set aside until cool enough to handle, about 15 minutes.

    Roasted corn on a rimmed baking sheet

    Rezel Kealoha

  3. To remove kernels from the cobs, place a large bowl on your work surface and invert a small bowl within the large bowl (this serves as a base on which to rest the corncob). Working with one at a time, place one end of a cob on the inverted, smaller bowl. Using a chef's knife, slice downward, as close to the base of the kernels as possible while taking care not to angle the blade into the cob itself. Rotate the ear of corn, and continue until all the kernels have been removed. Repeat with remaining ear of corn. Set aside; reserve cobs.

    Roasted corn cob balanced on a small bowl inverted in a large mixing bowl with a knife balanced on lip of larger mixing bowl

    Rezel Kealoha

  4. In a Dutch oven or stockpot, heat 1 tablespoon (15ml) oil over high heat until shimmering. Using tongs, add shanks and cook, turning occasionally, until well browned on all sides, about 5 minutes. Transfer to plate; set aside. Add garlic and onions to stockpot. Cook, stirring frequently, until garlic is golden brown and onions are translucent, about 3 minutes. Scrape onto plate with shanks.

    Beef shanks browning in a Dutch oven

    Rezel Kealoha

  5. Add reserved corn cobs and reserved onion, cabbage, and scallion trimmings to stockpot and cover with water. Bring to a boil over high heat and cook for 10 minutes. Lower heat to maintain a simmer and continue to cook for 30 minutes. Using a spider skimmer, remove cobs and trimmings, and discard.

    Vegetables trimmings and kerneled corn cobs simmering in water in a Dutch Oven

    Rezel Kealoha

  6. Add reserved shanks, garlic and onion, beef tendons (if using), and beef knuckles (if using) to stockpot (be sure to check the water level; if the shanks, tendons, and knuckles are not fully covered, add water as needed). Bring to a boil over high heat and cook for 30 minutes. Lower heat to maintain a simmer, partially cover with lid, and continue to cook until tender, about 1 1/2 hours. Add cabbage, cover, and cook until cabbage is tender, about 10 minutes. Stir in fish sauce, 1 tablespoon at a time, until sufficiently seasoned.

    Cabbage added to bulalo in final stage of cooking

    Rezel Kealoha

  7. Meanwhile, line two rimmed baking sheets with aluminum foil. In a large bowl, toss potatoes with remaining 2 tablespoons (30ml) oil, then season with salt and pepper. Transfer to a prepared baking sheet. Roast potatoes until crispy on the outside and fork-tender on the inside, about 20 minutes.

    Roasted potatoes on a foil-lined baking sheet

    Rezel Kealoha

  8. Place marrow bones on second prepared baking sheet. Roast marrow bones until crisp, brown on the edges, and marrow is soft and pulling away from the bone, about 20 minutes.

    Roasted marrow bones on a foil lined baking sheet

    Rezel Kealoha

  9. To serve, divide marrow bones, shank, tendons, and knuckles between soup bowls. Top with cabbage, potatoes, and corn. Ladle broth on top, garnish with scallions, and serve hot with white rice.

    Serving suggestion for bulalo, with marrow bones, roasted corn, roasted potatoes, and braised cabbage set atop soup with shank bone

    Rezel Kealoha

Special Equipment

Large Dutch oven or stockpot, spider skimmer, rimmed baking sheets.


If your marrow bones don't come pre-cut, ask the butcher to cut them for you.

If you have a stovetop pressure cooker or electric multicooker (such as an Instant Pot), you can use it in place of the Dutch oven or stockpot. To do that, sear the shank first, then add tendons (if using), knuckles (if using), and vegetable trimmings, and cover with water. Cook at high pressure for 1 hour. Once the pressure is released, add the cabbage, cover, and cook until the cabbage is tender, about 10 minutes. Proceed with the recipe as directed.

You can use beef stock instead of water for a more flavorful soup.

Make-Ahead and Storage

Bulalo can be refrigerated in an airtight container for up to 1 week and frozen for up to 6 months.