Michael Beale’s side were down to 10 men after captain Cameron Brannagan was dismissed after 34 minutes. Arnel Jakupovic put the visitors ahead from the resulting free-kick.
It was a strong side for the young Reds in Chester, with Adam Bogdan, Jon Flanagan, Tiago Ilori and Jose Enrique all playing 90 minutes.
Despite being a goal and man down, Liverpool attacked Boro in the second half and equalised through Ojo in the 53rd minute – the 18-year-old cutting inside from the left to fire past the keeper with his right foot.
Liverpool continued to dominate and attack, and it was Ojo who gave Liverpool an unlikely victory in the Barclays Premier League tie after exciting American attacker Brooks Lennon came off the bench to win the spot kick.
LFC U21s: Bogdan, Flanagan, Enrique, Ilori, Maguire (Virtue, 37 (Gomes 78)), Brannagan, McLaughlin, O’Hanlon, Sinclair (Lennon, 90), Kent, Ojo.
Subs not used: Firth, Hart.
Middlesbrough U21s: Fryer; Johnson, Eldson, Burn, Kitching, Tinkler (Wheatley, 57), Chapman (McAloon, 73), Pattison, Jakupovic, Cooke, Jones.
Subs not used: James, Jowers, McGinley.