Ronaldinho had a chance to open the scoring in his unofficial 100th appearance for the Selecao, but was denied from the penalty spot by Joe Hart. Eight minutes later, Wayne Rooney showed the 32-year-old how to finish, stroking a loose ball into the back of the net after a good save by Julio Cesar.
Substitute Fred equalized minutes after halftime, before one of Roy Hodgson’s own introductions, Frank Lampard, smashed the Three Lions back into the lead.
Ashley Cole became only England’s seventh centurion, picked to start for the 100th time, while Manchester United center back Chris Smalling was an unexpected selection in defense.
Ronaldinho was handed a first start for Brazil after almost a year in the international wilderness, adding experience to a young, vibrant side headlined by the dazzling talent of Neymar.
The contest began in poignant fashion, with the samba beats and brass band replaced by a minute’s silence for both the victims of the Munich air disaster and the nightclub fire in Santa Maria that claimed 238 lives last week.
Brazil started the match confidently, with Neymar threatening in behind. But it was England which came closest to opening the scoring, with Rooney’s goal-bound header producing a stunning reflex save from Julio Cesar.
In the 16th minute, veteran Ronaldinho’s cross smashed into the arm of Jack Wilshere. The 32-year-old stepped up to take the spot-kick but was denied by the strong wrists of Hart.
The Three Lions goalkeeper palmed the ball away a second time as Ronaldinho looked to pounce on the rebound, before Tom Cleverley completed the clearance with a risky goal-mouth challenge on Neymar.
Wilshere made amends for his error minutes later, playing a delicate through-ball for Arsenal teammate Theo Walcott. The winger’s shot was saved by Cesar, but ricocheted to Rooney on the edge of the box who calmly passed the ball between a mesh of yellow and green shirts to open the scoring.
Brazil should have been level before the break though, with Oscar whipping an inch-perfect cross towards the back post which Neymar somehow conspired to prod over the bar from two yards. Paulinho then had an overhead kick cleared off the line by Glen Johnson.
Juts three minutes after the restart, England’s hard-fought leaped was wiped out. Gary Cahill overran the ball deep in his own half, with Lucas Moura’s half-block-half-tackle bouncing into the path of fellow sub Fred. The Fluminense forward took a touch and buried his left-footed shot in the top corner.
Seconds later, Hart’s heavy pass bounced off Cahill and fell to the feet of Oscar. The Chelsea star cushioned the ball to Fred, whose curling effort from the edge of the box clipped the top of the crossbar.
But then it was England’s chance to capitalize on an error. Marcos Arouca’s wayward pass found only Rooney, whose lay-off to Lampard was expertly powered past Cesar from outside the area, cannoning off the inside off the near post before nestling in the opposite corner.
The flow of the match was stifled as both sides made a number of substitutions, but England – limiting Brazil to just a handful of optimistic shots from range – hung on to claim a morale boosting victory.