Heat olive oil in a large saucepan over medium-high heat. Add onion; cook and stir until soft and beginning to brown, about 12 minutes. If browned bits of onion are stuck to the bottom of the pan, add water and stir to loosen.
Stir ground beef, garlic, ginger, serrano chile, and cilantro into the pan; cook and stir until beef is browned and crumbly, 10 to 15 minutes. Reduce heat to medium-low. Stir in coriander, salt, cumin, cayenne pepper, and turmeric; cook and stir until flavors blend, about 5 minutes. Add potatoes and tomatoes; cover and simmer until potatoes are tender, about 15 minutes.
Stir in green peas and cook until sauce has slightly thickened and flavors have blended, 10 to 15 minutes. Sprinkle garam masala over top, cover, and let stand for 5 minutes before serving.