In late June 2007, López signed for Villarreal CF for a reported fee of €6 million, and started the season as second-choice to Uruguayan Sebastián Viera but, after a string of fine performances – he played in the Copa del Rey and the UEFA Cup – he was picked for the first team, finishing the season with 21 matches. López was ever-present in 2008–09, playing every minute and helping Villarreal finish fifth in the league. The following campaign was similar, but the team could only finish seventh, out of the European places. However, as fifth-placed RCD Mallorca was expelled from European competition due to bankruptcy, the Valencians took their place in the qualifying rounds of the UEFA Europa League. López featured in every league game except one in 2011–12, being given his marching orders against Sevilla FC in a 2–2 home draw in the second round. The Yellow Submarine were eventually relegated after twelve years, with the player conceding 50 goals.
Sevilla
On 22 May 2012, López joined Sevilla FC on a five-year contract for a reported fee of €3.5 million. He split first-choice status with Andrés Palop during his spell.
Return to Real Madrid
On 25 January 2013, López returned to Real Madrid after Casillas suffered a hand injury which ruled him out for 12 weeks, signing for €3.5 million until June 2017. Shortly upon arriving, he stated he had always dreamed of coming back to the club. López played his first game in his second spell on 30 January 2013, in a 1–1 home draw against FC Barcelona for the Spanish Cup semi-finals. On 5 March, he made a string of saves as Real beat Manchester United 2–1 at Old Trafford to qualify for the last-eight in the Champions League. After the match, coach José Mourinho said: "Diego López was the best player in my team"; he retained his position until the end of the season, even though Casillas had already returned to full fitness. López retained his number one position at the start of the following campaign, when Carlo Ancelotti had replaced Mourinho. Casillas was played in both the Champions League and the domestic cup, however.
Milan
On 13 August 2014, Real Madrid and A.C. Milan reached an agreement over the transfer of López. He made his competitive debut on 31 August in the first match of the new season in Serie A, saving a late penalty from Antonio Candreva in a 3–1 win over S.S. Lazio. On 14 September he suffered a right thigh injury against Parma FC, being sidelined for almost a month. After three matches without a win early into the 2015–16 campaign, manager Siniša Mihajlović dropped López in favour of 16-year-old Gianluigi Donnarumma.
Espanyol
On 31 August 2016, López joined RCD Espanyol on a season-long loan deal. He was elected La Liga Player of the Month in November, after not conceding in any of the three matches. On 23 May 2017, López's move was made permanent. Subsequently, he was overtaken by Pau López still under manager Quique Sánchez Flores.
López was a commanding and well-rounded goalkeeper, with a large and imposing physique, strong leadership qualities and good handling, which facilitated him in coming out to claim crosses. Possessing quick reactions, concentration and a good positional sense, he was also an effective shot-stopper. López was known in particular for his ball control, distribution and speed when rushing off his line to anticipate opponents.
Personal life
López married Iria Otero on 11 June 2011, fathering three children.