Gray came through the youth system of Birmingham City, for whom he made his Football League debut as a 17-year-old in October 2013. In two-and-a-half seasons, he made 78 appearances across all competitions, including 51 starts in the Championship, and scored 8 goals. Gray signed for Leicester City in January 2016, and was a member of their 2015–16 Premier League-winning squad.
He has represented England from under-18 to under-21 level.
Gray was born in Birmingham, where he attended Frankley High School and played for Cadbury Athletic's junior teams. He joined Birmingham City's Academy as an under-11, and took up a two-year scholarship in July 2012. In a 2013 interview, Gray assessed his strengths as "pace, dribbling and technique", felt he needed to "score more goals", described himself in three words as "bubbly, calm and happy", and named Nathan Redmond as the biggest influence on him since joining the club.
After impressing Birmingham manager Lee Clark in training, he was named in the squad for the Championship match against Millwall on 1 October 2013, and made his senior debut as a 91st-minute substitute for Jesse Lingard in a 4–0 win. He made his first start on 2 November, in a 1–0 league defeat at home to Charlton Athletic. Gray signed his first professional contract, of two-and-a-half years, on 9 December. Days after his inclusion together with academy teammate Reece Brown in a "Top 10 Football League stars of tomorrow" feature on the FourFourTwo website, Gray scored his first senior goal. Entering the League match at home to Blackburn Rovers on 19 April 2014 as a second-half substitute with Birmingham 4–1 down, he received a pass from Federico Macheda and shot low into the corner to score the final goal of the match. His performance over the season earned him the Academy Player of the Season award for 2013–14.
Gray performed well in 2014–15 pre-season, and the management suggested he was showing increased maturity. He started the first two matches of the season, but for the remainder of Clark's tenure as manager, Gray was used more as substitute than starter. Against Leeds United in September, he was denied a penalty and booked for diving when apparently fouled by Giuseppe Bellusci; both managers thought it the wrong decision. The following week, his first goal of the season gave Birmingham a 2–0 lead at top-of-the-table Norwich City, but he became unwell in the second half. Norwich scored while Birmingham were attempting to substitute him, and the match ended 2–2.
He made his first start under new manager Gary Rowett in the 1–0 win away to Rotherham United on 22 November, and soon established himself as the left-sided wide midfielder in a 4–2–3–1 formation as Rowett regularly named an unchanged starting eleven. On his tenth league start, Gray scored three times in the first half of the match at home to Reading on 14 December, which ended 6–1. It was his first hat-trick since his under-14 days, and Rowett praised not only his clinical finishing but also his work off the ball and tracking back to cover in defence. His performances during December earned him the Football League Young Player of the Month award.
Clark had expressed concern that the club's financial difficulties would force the sale of players such as Gray, and the player was offered a two-year contract extension. A £500,000 bid from Premier League club Crystal Palace was rejected in September, scouts regularly watched the player, and media reports linked him with clubs including Liverpool, Newcastle United and Tottenham Hotspur. The club turned down a series of offers, the highest reported as £5 million, from Championship club AFC Bournemouth in the January 2015 transfer window. In a statement issued when the window closed, they said that "none of [those offers] reflected the ability and potential of the player", and expressed their pleasure at having retained his services.
With loanee Lloyd Dyer available as an alternative, Rowett used Gray more sparingly, suggesting that his reduced effectiveness was a normal part of a young player's learning curve: the player needed to learn how to impose himself on a match despite increased attention from the opposition. The Birmingham Mail suggested that Gray's potential as a matchwinner should not be ignored. His solo goal on 11 April, in which he ran the length of the pitch to score the winner against Wolverhampton Wanderers, was his first since the Reading match and earned him the club's Goal of the Season award. According to The Guardian, "It was not so much the 18-year-old's pace that impressed as his persistence in running at and then pressurising Wolves full-back Scott Golbourne into error, and the certainty with which he then slid the ball past the Wolves goalkeeper". He finished the season with 43 appearances in all competitions, of which two-thirds were as a starter, and won the club's Young Player of the Season award.
After many months of negotiation, Gray signed a new three-year contract with the club in July 2015. At the player's insistence, a release clause was included in the terms. He went into the new season feeling "stronger as a player, physically and mentally", and produced some fine performances, as in a 2–0 win at Leeds in October, when he took advantage of confusion in the defence to score what proved to be the only goal of his Birmingham season, and in a goalless draw at Preston North End in December. He nearly marked his last appearance for the club, as a substitute in a 2–0 win at home to Milton Keynes Dons on 29 December, with a farewell goal. When the ball broke to him, "with a single silky touch and devastating burst he was in on goal, ready to put the icing on an outstanding team performance. He gave the goalkeeper the eyes, created the gap at the near post – and proceeded to hit the upright."
In the early part of the season, Gray had asserted that "right now what's key for my development is playing games here", but that "I will know when it's my time". When Rowett selected Viv Solomon-Otabor to start ahead of Gray against MK Dons "with January coming up", it was clear that his time had arrived.
Premier League club Leicester City activated the release clause in Gray's contract, reported as £3.7 million, and he signed a four-and-a-half-year contract on 4 January 2016. He made his debut on 10 January, away to Tottenham Hotspur in the third round of the FA Cup. He started the match, assisted a goal by Marcin Wasilewski, and "showed glimpses of the pace that will cause Premier League defences problems" in the 2–2 draw at White Hart Lane. Six days later he made his first appearance in England's top flight, as an 85th-minute substitute for Marc Albrighton in a 1–1 draw at Aston Villa.
Consistency of team selection as Leicester maintained their position at the top of the league meant Gray's chances of first-team football were limited, but teammate Danny Simpson highlighted the contribution of the squad players. Former Sky Sports journalist Alex Dunn wrote that Gray "proved to be incredibly adept at killing time when coming on for Leicester as a late substitute". He made the assist for Jamie Vardy's stoppage-time goal that secured a 2–0 win at Sunderland, and against Swansea City, his run from deep, cross and parried shot set up a goal for Albrighton. He had made ten appearances, all as a substitute, by 2 May when Leicester were confirmed as champions.
Gray was called up for an England under-18s training camp in November 2013. He made his debut at that level on 18 February 2014, playing the whole of a 4–0 win against their Belgian counterparts in a friendly match at St George's Park. Two weeks later, he was involved in England's goal as they lost 2–1 to Croatia in the first match of a double-header. He received his first call-up to the under-19s for a friendly against Germany in September 2014, and made his debut as a second-half substitute. An ankle injury forced Gray's withdrawal from the squad for the 2015 European Under-19 Championship first qualifying round, but he was able to play his part in the elite round. He started the first match, against Denmark, and was involved in England's second goal in a 3–2 win, when his near-post flick was deflected over the line by a Danish player. The Football Association (the FA) credit Gray with the goal, although UEFA record it as an own goal. A substitute in the second group match, a win against Azerbaijan, he returned to the starting eleven for the final group match against France, but a 2–1 defeat meant England failed to qualify for the finals.
After taking part in a joint training camp for the under-20 and under-21 teams, Gray was included in Aidy Boothroyd's under-20 squad for the 2015 Toulon Tournament. Starting the opening match on the left of a three-man attack, Gray gave England an 8th-minute lead with a shot from 12 yards (11 m), but Morocco twice took the lead before Chuba Akpom secured a 3–3 draw for England. Gray was a second-half substitute in the next match, a win against Ivory Coast. He made his third appearance as England lost to Mexico, but took no part in the last group game or the third-place play-off, and later admitted he had felt tired after a full season of league football and had not been at his best. He and Birmingham teammate Reece Brown were called up for the under-20s' first matches of the 2015–16 season, a double-header against the Czech Republic. In the first match, both Brown and half-time substitute Gray scored as England won 5–0; in the second, despite what the FA's website called a "hugely influential" attacking performance by Gray, they lost 1–0.
After Nathan Redmond withdrew through injury, Gray was called into the under-21 squad for European Championship qualifiers in November 2015. An unused substitute for the first match, a goalless draw away to Bosnia and Herzegovina, he was not included in the matchday squad for the second, a 3–1 win at home to Switzerland. Gray made his under-21 debut on 26 March 2016, in the reverse fixture against Switzerland, a 1–1 draw. His run led to England's goal, scored by Akpom, and according to head coach Gareth Southgate, "it was a super debut. He was a threat all night and I think the work he did at the goal was exceptional but he also put a real shift in for the team and did his work off the ball."As of match played 19 September 2017
Leicester CityPremier League: 2015–16
Birmingham City Academy Player of the Season: 2013–14
Football League Young Player of the Month: December 2014
Birmingham City Young Player of the Season: 2014–15
Birmingham City Goal of the Season: 2014–15