INTERNATIONALS: VICTORY FOR ENGLISH PAIR
Cahill, winning his 16th cap, started in central defence alongside Phil Jagielka and saw his side fall behind to James Morrison's early drive before Theo Walcott's equaliser.
The 27-year-old was then beaten by Kenny Miller early in the second half as the Scots went back in front, only for Danny Welbeck to head an equaliser within a few minutes.
Lampard, a half-time substitute, almost put England in front on the hour when he turned and shot from the edge of the area, forcing Scottish goalkeeper Allan McGregor into a save low to his right, with Leighton Baines, in for the unused Ashley Cole at left-back, unable to convert the rebound.
Three minutes later, after picking up the captain's armband following Steven Gerrard's substitution, the midfielder was booked for a foul on Scotland's Shaun Maloney.
Debutant Rickie Lambert, just on as a sub, headed England's winner from a Baines corner, with Lampard on hand to congratulate the Southampton man. Thirteen minutes from time, the 35-year-old, winning his 98th cap, forced another save from McGregor with a dipping long-range drive.
In Brussels, there were four Chelsea starters as Belgium drew 0-0 with France. Thibaut Courtois, on loan at Atletico Madrid, made two important saves from Karin Benzema as he played the entire game.
Kevin De Bruyne and Romelu Lukaku nearly combined after 16 minutes, with Gael Clichy forced into an excellent intervention to keep the striker at bay, while a few minutes later Eden Hazard brought a save from French goalkeeper Hugo Lloris.
Shortly before half-time De Bruyne dragged a good opportunity wide, and then after the break Lukaku struck the post before being replaced by Aston Villa's Christian Benteke on the hour.
Hazard was replaced by Dries Mertens on 74 minutes, with De Bruyne exiting the action on 85, Tottenham's Mousa Dembele replacing him.
Oscar was a starter for Brazil as they lost 1-0 to Switzerland, going close to opening the scoring in the first half before Barcelona's Danii Alves headed an own goal in the second. The Chelsea midfielder was substituted after 58 minutes. David Luiz was an unused sub.
Branislav Ivanovic's Serbia were beaten 1-0 by Colombia in Barcelona, with Inter's Fredy Guarin scoring the winner.
Andre Schurrle played the final 10 minutes in Germany's 3-3 draw against Paraguay in Kaiserslautern, replacing goalscorer Thomas Muller of Bayern Munich and almost firing a winner for his country, but could not find the target with his late drive.
In Portugal, Marco van Ginkel won a second Dutch cap, coming on as a substitute for Rafael van der Vaart at half-time in their 1-1, which came courtesy of an early strike from Roma midfielder Kevin Strootman and a late equaliser from Real Madrid's Cristiano Ronaldo. Van Ginkel almost created a goal for fellow sub Klaas Jan Huntelaar after an hour after playing a lofted pass over the Portuguese defence.
Petr Cech did not travel to Hungary for Czech Republic's 1-1 draw, instead staying at Cobham with the approval of his country's FA, while in Ecuador, Cesar Azpilicueta was an unused sub in Spain's 2-0 win.