He began his career at Sevilla, playing 62 official games and winning the UEFA Europa League in 2014, before moving to Liverpool for a fee of £12 million.
Moreno was part of the Spain under-21 team that won the 2013 UEFA European Championship and made his senior debut the same year.
Moreno was born in Seville, Andalusia and came through the youth ranks at Sevilla. He made his first-team debut for Sevilla Atlético on 12 June 2011, in a 3–1 home win over Guadalajara in the Segunda División B play-offs second round second leg (4–5 aggregate).
In his first full season, he scored four goals in 30 games, as his team missed the play-offs. His first senior goal was the only one of the home game against Cádiz on 13 November, direct from a corner kick in added time as a substitute. On 12 February 2012 when hosting Cacereño, he was sent off after concluding a 2–0 win.
On 8 April 2012 he made his first-team – and La Liga – debut, coming off the bench for Manu del Moral in the last minutes of a 0–1 away loss against Athletic Bilbao.
In February 2013, Moreno was promoted to the main squad. On 4 October he renewed his link with the club, signing until 2018.
On 20 October 2013 Moreno scored his first professional goal, netting the second in a 2–2 draw at Real Valladolid; the following 19 January he got a straight red card at the end of a 1–1 draw at high-flying Atlético Madrid for confronting Gabi. He played 14 games in Sevilla's victorious campaign in the UEFA Europa League, converting his attempt on 20 March 2014 as the team defeated city rivals Real Betis in a penalty shootout in the last 16.
On 12 August 2014, it was revealed, after a month and a half of negotiations, that Liverpool had agreed a £12 million deal with Sevilla for Moreno. He was subsequently withdrawn from Sevilla's matchday squad for their 2014 UEFA Super Cup match against Real Madrid at the Cardiff City Stadium that evening. He completed the transfer four days later.
On 26 August 2014, Moreno made his Liverpool debut in a league match against Manchester City, starting and playing the full 90 minutes in a 1–3 away loss. He scored his first goal for the Reds five days later, netting the last of a 3–0 away win against Tottenham Hotspur, after dispossessing Andros Townsend and sprinting 40 yards to goal in the 60th minute. On 29 December he scored the opening goal against Swansea City in a 4–1 victory for Liverpool at Anfield.
Moreno spent the first four games of the next season as a substitute as new teammate Joe Gomez started in his position. However, on 20 September 2015, he made his first league start of the season, providing the assist for Danny Ings' first Liverpool goal in a 1–1 draw against Norwich City, and was praised for his man of the match performance. His performance in the 2016 UEFA Europa League Final, where Liverpool lost 1–3 to his former club Sevilla, was heavily criticised by pundits and journalists for positioning and defensive errors.
On 14 August 2016, Moreno started in the first game of the season, a 4–3 win at Arsenal, where he conceded a penalty and was criticised heavily for his performance, prompting a defence from his manager Jürgen Klopp. Despite his manager's intervention, he was dropped and used only as a late substitute for the next game, an 0–2 loss at Burnley. He made 18 appearances over the season, just eight as a starter, as James Milner was preferred in the left-back slot.
In April 2017, Serie A teams AC Milan and Inter Milan spoke to Liverpool about a transfer for Moreno, and in June the Reds rejected a €12.5 million bid for him from another Italian club, Napoli.
Moreno represented the Spanish under-21s at the 2013 UEFA European Championship, being first-choice as he helped them retain their European title. Following the competition's completion he was announced in UEFA's official team of the tournament.
Moreno was called up to the senior team on 4 October 2013 for the last 2014 FIFA World Cup qualifier against Georgia, and he made his debut on 15 October, playing the full 90 minutes in a 2–0 win in Albacete.
Moreno was included in Vicente del Bosque's 30-man provisional list for the tournament in Brazil, but was one of seven players cut from the final squad.
Moreno has many tattoos. In April 2016, he had his leg decorated with an image of a gun-toting chimpanzee dressed in a suit and wearing headphones; ESPN FC's verdict was "Please don't ask, because we haven't got the slightest clue." The back of his leg is decorated with the coordinates of his hometown's Plaza de España.As of match played 27 August 2017
As of match played 30 May 2014
SevillaUEFA Europa League: 2013–14
Spain U21UEFA European Under-21 Championship: 2013
UEFA European Under-21 Championship: Team of the Tournament 2013