England secured their first win over Brazil for 23 years as Frank Lampard's spectacular strike gave them victory at Wembley.
Brazil returned to Wembley as part of the Football Association's 150th anniversary celebrations - and played their full part in a highly entertaining friendly.
Wayne Rooney steered England into a first-half lead with his 33rd goal for his country, after goalkeeper Joe Hart had earlier saved Ronaldinho's penalty.
Fred punished Gary Cahill's mistake to put Brazil level just after the interval but Lampard, on as a half-time substitute for Tom Cleverley, gave Roy Hodgson's side a confidence-boosting win with a precisely curled effort from the edge of the area on the hour.
England silence Samba Boys... at last
England's win over Brazil was the first since 1990 when Gary Lineker's header earned a 1-0 victory at Wembley
It was also the first time England have scored two goals versus Brazil since 1984 when John Barnes (pictured) ran in a stunner and Mark Hateley followed up for a 2-0 win in the Maracana
It completed a satisfying night's work for Hodgson and England as Ashley Cole won his 100th cap and Arsenal's Jack Wilshere delivered a display rich in promise as he started alongside captain Steven Gerrard in midfield for the first time.
Arsenal's Wilshere, particularly in the first half, was outstanding on only his seventh England appearance and looked intent on making up for time lost with club and country after an ankle injury sidelined him for 15 months.
England looked potent going forward with Rooney as the main point of the attack and Theo Walcott and Danny Welbeck on the flanks, which will give Hodgson food for thought before the crucial World Cup qualifiers away to San Marino and Montenegro next month.
Cole received a warm reception from England's supporters inside Wembley as he completed his century of international appearances.
The visitors' own centurion, Ronaldinho, received a commemorative shirt from the Brazilian federation to mark his 100th cap - but he was unable to celebrate it with a goal as he missed a penalty after 19 minutes. The award of handball against Wilshere from Ronaldinho's cross appeared harsh, so a measure of justice was done as Hart saved his spot-kick then recovered superbly to scoop away the rebound.
The hosts took advantage of Hart's good work to move into the lead eight minutes later. Wilshere was once again at the heart of it with a fine ball to release Walcott and when keeper Julio Cesar saved bravely at the Arsenal forward's feet, Rooney steered home the rebound in composed fashion from the edge of the area.
Little had been seen of the much-celebrated Neymar and his first serious contribution was hardly distinguished as he steered Oscar's cross well over the top at the far post when he should have scored.
England made two changes at half-time, sending on Lampard and Leighton Baines for Tom Cleverley and Cole, while Brazil replaced Ronaldinho, Ramires and Fabiano with Fred, Lucas and Arouca.
The Brazilian changes reaped instant reward as Fred equalised three minutes after the restart. Cahill took the blame with a careless concession of possession that ended with Fred powering his finish past Hart.
And he almost put Brazil ahead seconds later when Hart's poor clearance caused problems and the Fluminense striker glanced another effort off the bar.
England's response, however, was in keeping with the rest of their performance and they were in front again on the hour. Julio Cesar had saved well from Cahill's header but he was helpless as Lampard's fine first-time shot from the edge of the area went in off the upright.
Free kick awarded for an unfair challenge on Bonfim Dante by Wayne Rooney. Free kick taken by Soares Julio Cesar.
Emboaba Oscar has an effort at goal from just outside the box which goes wide of the left-hand post.
Wayne Rooney is penalised for a handball. Direct free kick taken by Moreira Jean.
Wayne Rooney concedes a free kick for a foul on Joao Miranda. Joao Miranda takes the direct free kick.
James Milner decides to take a short corner.
Guedes Fred produces a left-footed shot from the edge of the area and misses to the left of the goal.
James Milner fouled by da Silva Dani Alves, the ref awards a free kick. Direct free kick taken by Leighton Baines.
Emboaba Oscar is caught offside. Joe Hart takes the free kick.
Bonfim Dante restarts play with the free kick.
Substitution David Luiz leaves the field to be replaced by Joao Miranda.
Junior Neymar fouled by Frank Lampard, the ref awards a free kick.
Bonfim Dante takes the free kick.
Substitution David Luiz goes off and Joao Miranda comes on.
Frank Lampard concedes a free kick for a foul on Junior Neymar.
Substitution Aaron Lennon is brought on as a substitute for Theo Walcott.
Emboaba Oscar takes a shot from just outside the penalty area which clears the crossbar.
Unfair challenge on Kasmirski Filipe Luis by Theo Walcott results in a free kick. Free kick taken by Emboaba Oscar.
Outswinging corner taken by Junior Neymar, Steven Gerrard makes a clearance.
Free kick awarded for an unfair challenge on Moreira Jean by Wayne Rooney. Junior Neymar takes the direct free kick.
Substitution (Brazil) makes a substitution, with Kasmirski Filipe Luis coming on for Claro Adriano.
Junior Neymar produces a left-footed shot from just outside the area that goes harmlessly over the bar.
Effort on goal by Junior Neymar from 20 yards. Comfortable save by Joe Hart.
The ball is sent over by da Silva Dani Alves, save made by Joe Hart.
Free kick awarded for a foul by Wayne Rooney on David Luiz. Direct free kick taken by David Luiz.
Moreira Jean produces a left-footed shot from the edge of the box and misses to the left of the target.
Substitution Moreira Jean on for Joe Paulo Paulinho.
Effort from deep inside the area by Claro Adriano misses to the left of the goal.
Substitution James Milner replaces Danny Welbeck.
Assist on the goal came from Jack Wilshere.
59:33 Goal scored
Goal - Frank Lampard - England 2 - 1 Brazil Frank Lampard grabs a goal from just outside the penalty box to the top right corner of the goal. England 2-1 Brazil.
Steven Gerrard has an effort at goal from just outside the box which goes wide of the right-hand post.
Corner taken by Steven Gerrard from the left by-line, Gary Cahill takes a shot. Save by Soares Julio Cesar. Inswinging corner taken right-footed by Steven Gerrard, save made by Soares Julio Cesar.
Rodrigues Lucas Moura gives away a free kick for an unfair challenge on Leighton Baines. Leighton Baines restarts play with the free kick.
Effort from 18 yards by Guedes Fred.
Assist on the goal came from Rodrigues Lucas Moura.
47:57 Goal scored
Goal - Guedes Fred - England 1 - 1 Brazil Guedes Fred gets on the score sheet with a goal from just inside the penalty area to the bottom right corner of the goal. England 1-1 Brazil.
Shot by Steven Gerrard. Save by Soares Julio Cesar. Effort from inside the area by Jack Wilshere misses to the right of the goal. Free kick awarded for a foul by da Silva Dani Alves on Jack Wilshere. Frank Lampard takes the free kick.
The match restarts for the second half.
Substitution Gaucho Ronaldinho leaves the field to be replaced by Rodrigues Lucas Moura.
Substitution Marcos Arouca joins the action as a substitute, replacing Nascimento Ramires.
Substitution (Brazil) makes a substitution, with Guedes Fred coming on for Clemente Luis Fabiano.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.