Born in Grenoble, Pied made his Ligue 1 debut for Olympique Lyonnais on the opening day of the 2010–11 season against Monaco, coming on from the bench in the 76th minute for Bafétimbi Gomis in a goalless draw. He made a first Ligue 1 start in the game against Valenciennes in week 5 and scored a headed goal in the 26th minute from Jimmy Briand's cross. The match ended 1–1 with Pied being named the man of the match by L'Équipe. On 14 September 2010, he played his first Champions League match against Schalke 04, entering shortly after the hour mark, replacing Michel Bastos, the goalscorer in the 1–0 victory. Pied's promising performances earned him the trust of Claude Puel and he started playing regularly starting matches or coming in from the bench. On 2 October 2010, he played the full match against Nancy and made an assist to the second goal of the match scored by Briand. Lyon eventually won the game 3–2. On 17 October 2010, Pied again made the starting lineup in a vital match against Lille. After all four goals of the game were scored, he quickly picked up two yellow cards which saw him expelled from the game, but Lyon held on and won the game 3–1. On 14 November 2010, he volleyed the only goal of the match, and his second goal of the season, against Nice after Yoann Gourcuff's cross. On 3 December 2010, Olympique Lyonnais announced contract extension for Pied for two years until June 2014. Pied scored his third goal for Lyon in 4–0 victory over Nancy coming off the bench in the 69th minute and scoring a header from a Michel Bastos cross. He scored his first 2011–12 Ligue 1 season goal on 27 August 2011 against Montpellier.
On 1 August 2016, Pied rejoined manager Claude Puel for the third time in his career when he signed a two-year deal with Southampton, joining on a free transfer. He made his Southampton debut as a substitute against Watford on 13 August 2016. 12 days after Pied suffered a knee injury that would keep him out for the rest of the season. Pied eventually returned to League action on 3 December 2017, when he played the full 90 minutes in a 1–1 draw at Bournemouth. At the end of the 2017–18 season, his contract with Southampton was not renewed.