Born in Bergamo to physical education teacher and a Sicilian mother, Gagliardini began his career at hometown club Atalanta playing for their youth teams and later for the reserves. He was promoted to the first-team squad for the 2013–14 season. On 4 December 2013, Gagliardini made his professional debut, starting in a 2–0 home win over Sassuolo, for the campaign's Coppa Italia.
On 17 January 2014, he was loaned to Serie B side Cesena with a 6-month loan deal. On 25 January he made his debut for Cesena as a substitute, replacing Guido Marilungo in the 74th minute and one minute latar he scored his first career goal in a 3–1 away win over Varese. On 2 February, Gagliardini played his first full match for Cesena, a 1–1 away draw against Virtus Lanciano. On 6 June, Gagliardini was sent-off with a double yellow card in the 67th minute of a 1–0 away win against Modena. Gagliardini ended his 6-month loan to Cesena with 21 apparences, including 16 as a starter, and 1 goal. He helped the team win promotion to Serie A.
On 1 September 2014, he was loaned to Serie B side Spezia on a season-long loan deal. On 7 September he made his debut for Spezia as a substitute replacing Juri Cisotti in the 68th minute of a 2–1 home win over Frosinone. On 24 January 2015, Gagliardini played his first entire match for Spezia and he scored his first goal in the 55th minute of a 1–1 away draw against Frosinone. Gagilardini ended his season-long loan to Spezia with 14 apparences and 1 goal.
On 29 July 2015, Gagliardini moved to Serie B side Vicenza on loan, with an option to purchase. On 9 August he made his debut for Vicenza in the second round of Coppa Italia in a match won at penalty 4–2 against Cosenza. On 15 August, Gagliardini played in the third round of Coppa Italia, he was replaced by Giovanni Sbrissa in the 78th minute of a 1–0 away win over Empoli. On 6 September he made his Serie B debut for Vicenza in a 1–0 away win against Modena. On 27 October, Gagilardini scored his first goal for Vicenza in the 24th minute of a 2–1 away win over Trapani. On 3 December he played in the fourth round of Coppa Italia in a 2–1 away defeat against Carpi, he was replaced in the 64th minute by Salvatore D'Elia. Gagliardi finished his loan to Vicenza with 19 apparences and 1 goal.
Return to Atalanta
On 15 May 2016, he made his Serie A debut with Atalanta in a 2–1 away win over Genoa, on the final match-day of the 2015–16 season. The first half of the following season, he was promoted to the starting line-up, making 13 more league appearances for the club.
Inter Milan
On 11 January 2017, Gagliardini joined Inter Milan on loan, with an obligation to buy in the summer of 2018. He was presented two days later, where he was assigned the squad number 5. Gagliardini made his Inter debut on 14 January against Chievo at San Siro, playing the full-90 minutes in a 3–1 win to help the Nerazzurri claim their fifth consecutive league victory. On 5 March, he scored his first goal for Inter in a 5–1 win at Cagliari. The following week, Gagliardini scored against his parent club Atalanta in a 7–1 thrashing by Inter.
Gagliardini is a quick, hard-working, energetic, physically strong, and well-rounded midfielder, who is capable of playing as a box-to-box, central, attacking, or defensive midfielder. He is effective as a ball winner, but can also distribute the ball well and start attacking plays or provide assists after winning back possession, courtesy of his good vision and technique. He also possesses a good shot, which allows him to contribute to his team's offensive play with goals.