A solution is possible using two
orthogonal Latin Squares. It would be very hard, I think, to find 12x12 squares like this by filling in a matrix by hand, so I hope you haven't been trying too long.
I have made a suitable schedule below using a mathematical construction, but note that because of the Latin square origin, all games in the schedule are between one team from the group (1 to 12) against one team from the group (13 to 24). Either you can use this to your advantage if there is a natural division of your 24 teams in to two equal sized groups, or just ignore it and randomly assign your 24 teams to the numbers 1 to 24.
( 1 22) ( 4 20) ( 9 19) ( 5 17) ( 2 23) ( 3 14) ( 6 15) (10 18) (12 16) ( 8 13) (11 21) ( 7 24)
( 2 19) (10 23) ( 4 14) ( 6 22) (11 24) ( 7 20) (12 21) ( 1 13) ( 8 18) ( 3 17) ( 9 15) ( 5 16)
( 5 14) ( 3 19) (12 15) ( 4 24) ( 8 22) (11 13) ( 1 17) ( 6 20) ( 9 21) (10 16) ( 7 23) ( 2 18)
( 6 13) (12 18) ( 7 17) ( 2 15) ( 5 21) ( 4 16) (10 24) ( 8 19) ( 1 23) ( 9 14) ( 3 22) (11 20)
( 8 15) ( 7 16) ( 3 13) (11 14) ( 6 18) ( 9 17) ( 2 22) (12 23) (10 20) ( 1 19) ( 5 24) ( 4 21)
( 3 16) ( 6 17) ( 8 24) ( 1 20) ( 7 13) ( 2 21) ( 9 18) ( 5 15) ( 4 22) (11 23) (12 14) (10 19)
( 4 23) (11 15) ( 2 20) ( 3 18) (10 14) (12 22) ( 7 19) ( 9 24) ( 5 13) ( 6 21) ( 1 16) ( 8 17)
( 7 18) ( 5 22) ( 6 16) ( 9 23) (12 17) (10 15) ( 4 13) ( 3 21) (11 19) ( 2 24) ( 8 20) ( 1 14)
(11 17) ( 9 13) (10 22) ( 7 21) ( 1 15) ( 5 19) ( 8 14) ( 2 16) ( 3 24) (12 20) ( 4 18) ( 6 23)
(10 21) ( 1 24) (11 18) (12 19) ( 9 16) ( 8 23) ( 5 20) ( 4 17) ( 6 14) ( 7 22) ( 2 13) ( 3 15)
( 9 20) ( 2 14) ( 1 21) ( 8 16) ( 4 19) ( 6 24) ( 3 23) (11 22) ( 7 15) ( 5 18) (10 17) (12 13)
(12 24) ( 8 21) ( 5 23) (10 13) ( 3 20) ( 1 18) (11 16) ( 7 14) ( 2 17) ( 4 15) ( 6 19) ( 9 22)