Born in Grijó, Vila Nova de Gaia, Porto District,[3] Gomes joined Benfica's youth system at age 18, playing his last year as a junior with the Lisbon club.
[7] On 18 October 2012, he made his official debut with the main squad, playing 25 minutes after coming on as a substitute for Eduardo Salvio and netting in a 4–0 win at Freamunde in the Taça de Portugal.
[23] He made his competitive debut on 17 August, playing the full 90 minutes in a 3–0 home win against Sevilla in the Supercopa de España and being directly involved in two of the goals.
[27] In the final of the Copa del Rey, however, he replaced injured Javier Mascherano early into the first half of the match against Alavés, playing mostly as a right-back and providing the assist for Neymar who netted the second in an eventual 3–1 triumph.
[33] Gomes was a regular for the Toffees during his spell,[34] but on 16 April 2019 he received a three-match ban for standing on the leg of Fulham's Aleksandar Mitrović during the 2–0 loss at Craven Cottage.
[36] On 3 November 2019, Gomes sustained a serious ankle injury in a Premier League home game against Tottenham Hotspur after a tackle by Son Heung-min and subsequent collision with Serge Aurier.
[42] Gomes made his first appearance for Everton in 19 months on 23 December 2023, coming on as a substitute for Idrissa Gana Gueye and scoring his team's goal in the 2–1 league loss at Tottenham.
[49] On 7 September 2014, Gomes made his full debut, starting and playing 90 minutes in a 0–1 defeat to Albania at the Estádio Municipal de Aveiro for the UEFA Euro 2016 qualifiers.
[50] He was selected for the squad that appeared in and won the finals in France,[51] starting in their first game, a 1–1 draw with Iceland in Saint-Étienne where he provided the assist to Nani's goal before being replaced by Eder late into the second half.