Gündoğan came through VfL Bochum's youth academy. He began playing for the club's reserve team in 2008 before signing for 2. Bundesliga club FC Nürnberg in 2009. He made his first assist on 19 September 2009 in an away game against Bayern Munich. He scored his first goal for Nürnberg on 20 February 2010 in a home match against Bayern Munich.
Gündoğan signed a four-year contract with Borussia Dortmund on 5 May 2011. He made his debut on 23 July in the 2011 DFL-Supercup against Schalke. His first Dortmund goal came on December 17 of the same year, in a 4-1 victory over SC Freiburg away from home. He won the Bundesliga and DFB-Pokal in his first season. He helped Dortmund reach the first UEFA Champions League final in 2013.
Gündoğan signed a new contract with Dortmund in April 2014, which kept him at the club until 2016. A year later, on 1 July 2015, Gündoğan signed a contract extension which would be in effect until June 2017.
On 2 June 2016, Gündoğan signed for Manchester City on 2 June 2016, on a four-year contract. Gündoğan made his debut on 14 September, in a 2016–17 UEFA Champions League group stage game against Borussia Mönchengladbach at home. On 14 December, he suffered a ligament injury in his right knee which kept him out for the remainder of the season.
At City he went on to win five Premier League titles, four EFL Cups, two FA Cups, and the UEFA Champions League in 2023. On 26 June, City announced that their captain would finally be departing the club after seven years.
After running out the term of his contract, Barcelona were quick to negotiate Gündoğan's move. Hailed as one of the best players of the generation, FC Barcelona has set Gundogan's buyout clause at 400 million euros (about $435 million).