Martina Voss-Tecklenburg’s side crushed Denmark 4-0 in their opening fixture, but had to show their more gritty side to see off Spain.
Germany had only two shots on target and just 30 percent of the possession, but their opportunistic finishing proved the difference at Brentford’s Community Stadium.
Buhl gave Germany the perfect start with her third minute opener and Popp doubled the lead eight minutes before half-time.
Germany sit top of Group B with maximum points after two successive victories, while Spain are in second place with three points.
Bottom of the group Finland, beaten 1-0 by Denmark earlier on Tuesday, were eliminated by the result from the day’s late game.
Spain were one of the pre-tournament favourites, but now sit level on points with Denmark, who they face on Saturday in a shoot-out to decide who will advance along with Germany.
Germany, eight-time European champions, were gifted the lead when Spain goalkeeper Sandra Panos tried to make a clearance from a routine back-pass but the ball struck Buhl, who turned inside Irene Paredes to drill a low shot into the bottom corner.
Spain were suddenly presented with a golden chance to score themselves when Lucia Garcia was played clear of a high German backline.
The Athletic Bilbao forward raced into the penalty area and took the ball wide of goalkeeper Merle Frohms, but sent her angled shot into the side netting.
Spain continued to press for an equaliser as Mariona Caldentey fired a dipping effort from the edge of the box just wide.
It was Germany, though, who were on target again seven minutes before half-time.
A corner was floated over into the six-yard box, where captain Alexandra Popp got up to flick in a backward header via a slight deflection.
Spain looked to regroup once more and went close again just before the break when Aitana Bonmati’s chipped effort dropped just wide.
Wolfsburg forward Popp almost had a third for Germany soon after the restart when she headed wide at the back post from a corner.
Popp was centre stage again as the hour mark approached, going down under what looked like a tug on the front of her shirt from Spain captain Paredes as she aimed to run clear on goal.
French referee Stephanie Frappart waved play on and VAR did not overturn the decision.
Spain almost pulled a goal back with 18 minutes left when a deep ball was floated into the penalty area and Caldentey sent a volley goalwards, which was brilliantly tipped over by Frohms.