O'Donnell was involved with Connacht at under-age level throughout his teenage years and joined the team's sub-academy in 2014. During the 2014–15 season, O'Donnell played in the All-Ireland League for Sligo at senior level, while also representing NUI Galway in the Connacht Junior League. After one year in the sub-academy, he was promoted to the academy ahead of the 2015–16 season, becoming the first player from the NUIG team to receive an academy contract. In O'Donnell's first season in the academy, injuries to first team players led to him making several appearances for the senior team. He made his debut against Cardiff Blues in the 2015–16 Pro12 on 3 October 2015. His European debut came on 14 November 2015, when he was part of the squad that traveled to Siberia to face Enisei-STM in the European Challenge Cup. O'Donnell's first start for the team also came in the Challenge Cup, when the province faced Newcastle Falcons away in the pool stages. He made a total of eight appearances for the senior team in his first academy season, playing four times in the Pro12 and Challenge Cup. At the beginning of the 2017–18 season, his final year in the academy, O'Donnell joined Buccaneers who had recently been promoted to Division 1A of the All-Ireland League. O'Donnell played with the Pirates when available, but also missed league matches to play with the Connacht Eagles. In January 2018, he made his return to the senior Connacht team when he featured from the bench against Munster in the Pro14. In March 2018, it was announced that O'Donnell had signed a senior contract with Connacht for the following season.
O'Donnell has represented Ireland internationally at under-age level. He was part of the Ireland schools team in 2014, despite Summerhill College not being a traditional rugby school. O'Donnell made five appearances for the schools team. He went on to play for the Ireland under-20s, featuring in all five of the team's games in the 2015 Under-20 Six Nations. O'Donnell was subsequently named in Nigel Carolan's squad for the 2015 Junior World Cup, and played in four of the side's five matches in the tournament as they finished seventh overall. O'Donnell was young enough to return to the under-20s for a second season and played in the 2016 Six Nations, again featuring in all the games. He missed out on the 2016 Junior World Cup through injury, however.