Germany 1-0 Portugal
Mario Gomez's second-half header ensured Germany made a winning start to Euro 2012 after Portugal had threatened to frustrate Joachim Loew's side.
Germany dominated possession but struggled to create many chances until Gomez broke the deadlock from Sami Khedira's cross in the 72nd minute.
Portugal were disappointing and only came to life after Germany scored.
Pepe hit the bar with a rare first-half chance while Nani was also denied by the woodwork late on.
Portugal must bounce back against Denmark on 13 June, the same day Germany face Netherlands, who lost 1-0 to the Danes in their opening game .
This match was billed as one of the most eagerly-awaited contests of the group stages.
"Portugal, for years and years, have not had a top centre forward. It's showed again. Nani does lovely things, Ronaldo does lovely things and the midfield is very creative. But, on the edge of the box, there is not one player who is a goal-hanger, and that is what they need. They need someone who's clever around the box."
But three-time world champions Germany and Euro 2004 runners-up Portugal struggled to entertain despite the wealth of talent on display.
The Germans included seven Bayern Munich players in the starting line-up and, judging by their first-half performance, they appeared to be suffering a hangover from their Champions League final defeat to Chelsea last month.
Portugal were unadventurous and clearly determined not to lose as they stifled Germany's attacking threat to such an extent that Loew's side only once seriously tested keeper Rui Patricio in the opening 45 minutes.
That came in the second minute when Gomez forced Patricio into a diving save after connecting with a cross by former Manchester City defender Jerome Boateng, playing despite Loew's threat to start Lars Bender at right-back after Boateng was pictured with a model in the early hours of last weekend.
New Arsenal recruit Lukas Podolski spurned a rare chance in the 31st minute when he blazed over from 15 yards after good work by Khedira, but it was Portugal, despite their defensive tactics, who went closest to breaking the deadlock before the interval.
With an average age of 25 years and 120 days, this was the youngest starting line-up for Germany at the European Championship finals.
With his club manager Jose Mourinho watching from the stand, Real Madrid's Pepe rattled the underside of the bar, after the German defence failed to deal with a corner, the ball bouncing on the line before being cleared.
Pepe thought he had scored but television replays showed the officials had made the right decision.
Nani struggled to make an impact, although his former Manchester United team-mate Cristiano Ronaldo produced flashes of the form which saw him end the season with 62 goals for Real Madrid and Portugal.
Ronaldo summed up Portugal's performance in the space of a minute early in the second half.
Having cut in off the left wing to force a save from Manuel Neuer, he delivered a dangerous cross which was headed behind by Mats Hummels. However, the resulting corner came to nothing.
With the game drifting towards a draw, Boateng produced a goal-saving challenge to deny Ronaldo in the 64th minute before Gomez struck eight minutes later.
Gomez was seconds away from being replaced by Miroslav Klose when he headed home his 23rd international goal after Khedira's cross from the right.
Portugal produced a late rally - Nani hitting the woodwork with a cross-shot before Neuer came to Germany's rescue with a fine save to deny substitute Silvestre Varela - but it proved too little too late.
Germany : Neuer, Boateng, Hummels, Badstuber, Lahm, Khedira, Schweinsteiger, Muller (Bender 90), Ozil (Kroos 87), Podolski, Gomez (Klose 80).
Subs Not Used : Wiese, Gundogan, Schmelzer, Howedes, Schurrle, Mertesacker, Gotze, Reus, Zieler.
Booked : Badstuber, Boateng.
Goals : Gomez 72.
Portugal : Rui Patricio, Joao Pereira, Bruno Alves, Pepe, Fabio Coentrao, Meireles (Varela 80), Veloso, Joao Moutinho, Nani, Postiga (Nelson Oliveira 70), Ronaldo.
Subs Not Used : Eduardo, Custodio, Almeida, Quaresma, Ricardo Costa, Rolando, Ruben Micael, Miguel Lopes, Hugo Viana, Beto.
Booked : Postiga, Fabio Coentrao.
Attendance : 33,951
Referee : Stephane Lannoy (France).
Sorry, we were unable to load match stats, please try again.