Gren was born on 31 October 1920 to parents Johan Olsson and Gerda Maria Olsson. Gren, a son of a carpenter, grew up in Majorna, Gothenburg. From a young age, Gren excelled in football. On 7 October 1934, Gothenburg Football Association President Carl "Ceve" Linde held a juggling contest. He won his first sporting prize – a bronze plaque. Göteborgs Sport Bladet wrote about 13-year old Gren's skills and how he outshone some of the big boy in the national league. The then, 13-year-old Gren played for Bollklubben Strix. During his youth, he played for Lindholmens BK and GAIK before playing Gårda BK.
In 1937 he started playing for Gårda BK. He made his Allsvenskan debut on 1 May 1938 against Malmö FF which resulted in a scoreless draw. During his time there, he played a total of 54 matches scoring 16 goals.
In 1941, he was recruited by IFK Gothenburg. During his time in the club, Gren won one national championships in the 1941/42 season and was top scorer in 1947. He won the first ever Guldbollen in 1946. His first league match for IFK was in August 1941, IFK played against Gårda BK winning 6–1 with Gren scoring the first goal. His last game for IFK was on 6 June 1949 versus IFK Norrköping at Gamla Ullevi in which Gothenburg lost 0–1. He had played 164 matches for IFK and scored 78 goals.
On 11 September 1949, he debuted for AC Milan against Sampdoria, with Milan winning 1–3. During his time with AC Milan, he became the 'Gre' part of the famous Gre-No-Li trio with his Swedish teammates Gunnar Nordahl ('No') and Nils Liedholm ('Li'). He also earned the nickname the "Il Professore" which is Italian for "the professor". While at AC Milan, he won the league title for the 1950/51 season. He made 133 appearances in Serie A and scored 38 goals. Gren also managed AC Milan in 1952 before moving to AC Fiorentina.
In 1953, Gren moved to AC Fiorentina where he made 55 appearances and scored 5 goals. Then in 1955, Gren moved to Genoa CFC where he made 29 appearances and 2 goals. Tired of Italy, Gren decided to move back to Sweden. In 1956, Gren returned to Gothenburg where he joined Örgryte IS as both player and manager. Gren left in 1959 and played for GAIS in 1963.
Gren made his debut for Sweden on 29 August 1940 in the team's 3–2 win over Finland. During the next decade he played 40 matches for the national team, ending in 1949 with 3–1 against Ireland in a World Cup qualifier and 2–2 in a friendly against Hungary. During this era Gren was part of the team that won the gold medal in the 1948 Olympics in London, scoring twice against Yugoslavia in the final on Wembley.
As a professional, Gren was suspended from the Swedish national team. However, as the World Cup of 1958 was to be played on home soil and the Swedish team seemed too weak for the competition, the Swedish Football Association changed this rule, and Gren, having now ended his professional career and playing in the Swedish Division 2, was again eligible. Gren went on to be the oldest player of this World Cup, 37 years old, and played an important role in the silver medal winning Swedish team. He played five matches during the World Cup and scored one goal, 2–1 against West Germany in the semi-final. He was also named on the 1958 World Cup All-Star Team.
Gren's last cap came on 26 October 1958 against Denmark in a 4–4 draw. At the time, he was 37 years, 350 days old. In all, Gren made 57 appearances for the national team, scoring 32 goals.