Heat oil in a stock pot over medium heat.
Sauté onions and garlic for 2 minutes.
Add beef and brown on most sides.
Add fish sauce and pepper, and mix.
Add marrow bones.
Lower heat to medium-low and cover for 10 minutes.
Add water and salt, mix, and bring to a boil.
Skim any scum that rises to the surface.
Lower heat to low, cover, and cook for 1 hour and 30-45 minutes, or until the beef is fork-tender.
Place green beans and cabbage on top of the beef and broth.
Press down lightly to submerge the vegetables.
Cover and continue simmering for 20-30 minutes.
Serve with a dipping sauce of lemon and fish sauce.