Barcelona, who handed Xavi his first trophy as coach of the Catalan club, were dominant in every aspect of the game and took advantage of three mistakes by Real Madrid to score.
For the second match in a row, Carlo Ancelotti said after the game that his team was not firing on all cylinders -- a sentiment he shared following a shootout win over Valencia in the semifinals -- after being outclassed in all phases by Barcelona.
"We have to learn [from this]. It's a difficult moment," Ancelotti said. "We knew before this game that the team wasn't at its best. This game has shown some issues which we need to improve. We'll be back. It's a blow, but we'll prepare for the next game.
"The game started off even, there wasn't much rhythm, but after they scored first, they had more confidence. We gifted them the first two goals.
"[We have] to work, to look at the mistakes we made. In the [semifinal] against Valencia, we were better in defence, and today we made mistakes again. We have to work on that."
Xavi sprung a surprise as he shifted from his usual 4-3-3 system to play an extra man in midfield with only Lewandowski up front, while centre-back Ronald Araujo was deployed at right-back to try to slow down Real's electrifying winger Vinicius Junior.
Vinicius was largely anonymous, while playing Gavi through the left channel paid dividends, as the youngster scored the opener and delivered two assists.
The LaLiga leaders went ahead in the 33rd minute after Real defender Antonio Rudiger passed across his own area to Barca's Sergio Busquets, who began a move that ended with Gavi all alone inside the box to score with a precise left-foot strike.
"We strengthened the midfield to look for taking over that area, and Araujo was really good stopping Vinicius counters. We left them with no options and felt very comfortable," Busquets said after the win
"We knew that it was an opportunity that we had to seize. We are going through a time of changes in the club and in the dressing room, and this win will strengthen us to continue fighting for more titles."
Lewandowski extended the lead 12 minutes later on the counter when Frenkie de Jong found Gavi, who ghosted in behind Real's defensive line before putting it on a plate for the Poland striker, who tapped it into the back of the empty net.
Real Madrid, who had no shots on target in the first half, spent most of the second in panic mode, trying to avoid a bigger defeat.
Yet, once again a costly mistake allowed Barcelona to score. Substitute Dani Ceballos lost the ball in midfield and Gavi sprinted forward and crossed for Pedri to fire point-blank into the empty net.