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.